我已经在sharepoint中成功创建了一个功能,可以修改现有的编辑对话框,并像这样添加一个自定义按钮。
我知道当用户点击这样的自定义按钮时我可以传回数据。
<CommandUIHandlers>
<CommandUIHandler Command="ActivateUser" CommandAction="/_layouts/MyFeature/MakeUserActive.aspx?ListID={ListId}&ItemID={ItemId}&ItemUrl={ItemUrl}&ListUrlDir={ListUrlDir}" />
</CommandUIHandlers>
详细here
我现在可以处理列表项并对其执行我所需的操作但是如果在修改上下文中添加了此按钮(IE:在sharepoint编辑项对话框内),如果要保存对数据本身的更改该怎么办? ?
对我而言,使用自定义按钮似乎总是意味着丢失用户对数据所做的任何更改。有办法解决这个问题吗?
答案 0 :(得分:4)
好问题!
您实际上已经链接到解决方案:现在您只需使用URL作为CommandAction重定向用户:CommandAction="/_layouts/MyFeature/MakeUserActive.aspx?ListID={ListId}&ItemID={ItemId}&ItemUrl={ItemUrl}&ListUrlDir={ListUrlDir}"
这个if课程将用户重定向到另一个页面而不保存当前条目。你想要做的是使用MSDN文章中链接的Javascript:
CommandAction="javascript:alert('here be dragons');"
您可以在此处使用SharePoint Javascript对象模型并使用SP.ListOperation.Selection.getSelectedItems();
之类的内容,也可以使用完整的自定义代码。
从你的aspx页面名称,我可以看到你想“使用激活”(顺便说一句:不会“激活用户。如何更好”?)。如果这只是意味着在另一个列表中设置属性,您可以使用SharePoint OM执行此操作,如果是某些自定义内容,则需要一个可以从JavaScript调用的“Web服务”并“激活用户”。您当然可以始终访问当前表单并传递用户输入的值。或者您可以创建一个自定义save button,它可以在保存之前完成某些操作(激活用户)。
最后:您还可以在自定义按钮中进行回发,在那里您可以执行任何您喜欢的操作。