Изменение диалога редактирования sharepoint

Я успешно создал функцию в sharepoint, которая изменяет существующее диалоговое окно редактирования и добавляет к нему настраиваемую кнопку следующим образом.

Модифицированный диалог sharepoint

и я знаю, что могу передавать данные обратно, когда пользователь нажимает пользовательскую кнопку, как это.

<CommandUIHandlers>
    <CommandUIHandler Command="ActivateUser" CommandAction="/_layouts/MyFeature/MakeUserActive.aspx?ListID={ListId}&amp;ItemID={ItemId}&amp;ItemUrl={ItemUrl}&amp;ListUrlDir={ListUrlDir}" />
</CommandUIHandlers>

Как подробно здесь

Теперь я могу обрабатывать элемент списка и выполнять с ним необходимые действия, НО, учитывая, что эта кнопка была добавлена ​​в контекст изменения (IE: внутри диалогового окна редактирования элемента sharepoint), что если вы хотите сохранить изменения в самих данных?

Мне кажется, что использование вашей пользовательской кнопки всегда будет означать потерю любых изменений, внесенных пользователем в данные. Это можно обойти?

1 ответ

Решение

Хороший вопрос!

Вы уже связались с решением: прямо сейчас вы просто перенаправляете пользователя, используя URL-адрес в качестве CommandAction: CommandAction="/_layouts/MyFeature/MakeUserActive.aspx?ListID={ListId}&amp;ItemID={ItemId}&amp;ItemUrl={ItemUrl}&amp;ListUrlDir={ListUrlDir}"

Это если курс перенаправляет пользователя на другую страницу без сохранения текущей записи. То, что вы хотите сделать, это использовать Javascript, как указано в статье MSDN:

CommandAction="javascript:alert('here be dragons');"

Вы можете использовать здесь объектную модель SharePoint Javascript и использовать что-то вроде SP.ListOperation.Selection.getSelectedItems(); или вы можете использовать полный пользовательский код.
По названию вашей страницы aspx я вижу, что вы хотите "сделать использование активным" (кстати: разве "ActivateUser.aspx" не будет лучше?). Если это просто означает установку свойства в другом списке, вы можете сделать это с помощью SharePoint OM, если это какой-то пользовательский материал, вам понадобится веб-служба, которую можно вызывать из JavaScript и "активировать пользователя" таким образом. Конечно, вы всегда можете получить доступ к текущей форме и передать значения, введенные пользователем. Или вы можете создать пользовательскую кнопку сохранения, которая выполняет некоторые действия (активирует пользователя) перед сохранением.

Наконец: вы также можете иметь постбэки в своей пользовательской кнопке, где вы можете делать все, что захотите.

Другие вопросы по тегам