Изменение диалога редактирования sharepoint
Я успешно создал функцию в sharepoint, которая изменяет существующее диалоговое окно редактирования и добавляет к нему настраиваемую кнопку следующим образом.
и я знаю, что могу передавать данные обратно, когда пользователь нажимает пользовательскую кнопку, как это.
<CommandUIHandlers>
<CommandUIHandler Command="ActivateUser" CommandAction="/_layouts/MyFeature/MakeUserActive.aspx?ListID={ListId}&ItemID={ItemId}&ItemUrl={ItemUrl}&ListUrlDir={ListUrlDir}" />
</CommandUIHandlers>
Как подробно здесь
Теперь я могу обрабатывать элемент списка и выполнять с ним необходимые действия, НО, учитывая, что эта кнопка была добавлена в контекст изменения (IE: внутри диалогового окна редактирования элемента sharepoint), что если вы хотите сохранить изменения в самих данных?
Мне кажется, что использование вашей пользовательской кнопки всегда будет означать потерю любых изменений, внесенных пользователем в данные. Это можно обойти?
1 ответ
Хороший вопрос!
Вы уже связались с решением: прямо сейчас вы просто перенаправляете пользователя, используя URL-адрес в качестве CommandAction: CommandAction="/_layouts/MyFeature/MakeUserActive.aspx?ListID={ListId}&ItemID={ItemId}&ItemUrl={ItemUrl}&ListUrlDir={ListUrlDir}"
Это если курс перенаправляет пользователя на другую страницу без сохранения текущей записи. То, что вы хотите сделать, это использовать Javascript, как указано в статье MSDN:
CommandAction="javascript:alert('here be dragons');"
Вы можете использовать здесь объектную модель SharePoint Javascript и использовать что-то вроде SP.ListOperation.Selection.getSelectedItems();
или вы можете использовать полный пользовательский код.
По названию вашей страницы aspx я вижу, что вы хотите "сделать использование активным" (кстати: разве "ActivateUser.aspx" не будет лучше?). Если это просто означает установку свойства в другом списке, вы можете сделать это с помощью SharePoint OM, если это какой-то пользовательский материал, вам понадобится веб-служба, которую можно вызывать из JavaScript и "активировать пользователя" таким образом. Конечно, вы всегда можете получить доступ к текущей форме и передать значения, введенные пользователем. Или вы можете создать пользовательскую кнопку сохранения, которая выполняет некоторые действия (активирует пользователя) перед сохранением.
Наконец: вы также можете иметь постбэки в своей пользовательской кнопке, где вы можете делать все, что захотите.