2

我已经成功地在 sharepoint 中创建了一个功能,它可以修改现有的编辑对话框并像这样向它添加一个自定义按钮。

修改共享点对话框

而且我知道当用户单击这样的自定义按钮时,我可以传回数据。

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

如此处详述

我现在可以处理列表项并对其执行所需的操作,但是鉴于此按钮已添加到修改上下文中(IE:在共享点编辑项对话框中),如果您想保存对数据本身的更改怎么办?

对我来说,使用自定义按钮似乎总是意味着丢失用户对数据所做的任何更改。有没有解决的办法?

4

1 回答 1

4

好问题!

您实际上已经链接到解决方案:现在您只是通过使用 URL 作为您的 CommandAction 来重定向用户:CommandAction="/_layouts/MyFeature/MakeUserActive.aspx?ListID={ListId}&amp;ItemID={ItemId}&amp;ItemUrl={ItemUrl}&amp;ListUrlDir={ListUrlDir}"

这当然会将用户重定向到另一个页面而不保存当前条目。您要做的是使用 MSDN 文章中链接的 Javascript:

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

您可以在此处使用 SharePoint Javascript 对象模型并使用类似的东西SP.ListOperation.Selection.getSelectedItems();,也可以使用完整的自定义代码。
从您的 aspx 页面名称中,我可以看到您想要“激活使用”(顺便说一句:“ActivateUser.aspx”不是更好吗?)。如果这只是意味着在另一个列表中设置一个属性,您可以使用 SharePoint OM 执行此操作,如果它是一些自定义内容,您将需要一个 Web 服务,您可以从 JavaScript 调用它并像这样“激活用户”。当然,您始终可以访问当前表单并传递用户输入的值。或者您可以创建一个自定义保存按钮,在保存之前执行一些操作(激活用户)。

最后:您还可以在自定义按钮中进行回发,您可以在其中做任何您想做的事情。

于 2012-06-14T07:40:24.193 回答