修改共享点编辑对话框

问题描述:

我已经在sharepoint中成功创建了一个功能,该功能修改了现有的编辑对话框并向其中添加了一个自定义按钮。修改共享点编辑对话框

Modified sharepoint dialog

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

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

至于详细here

我现在可以处理列表项,并对其执行我的要求行动,但考虑到这个按钮已经在修改背景下被添加(IE:里面的SharePoint编辑项对话框)如果你想保存数据本身的变化怎么办?

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

好问题!

你其实已经解挂:当然,如果将用户重定向到另一个页面而不保存当前条目CommandAction="/_layouts/MyFeature/MakeUserActive.aspx?ListID={ListId}&amp;ItemID={ItemId}&amp;ItemUrl={ItemUrl}&amp;ListUrlDir={ListUrlDir}"

此:现在你只需使用一个网址作为您的commandAction将用户重定向。你想要做的是使用JavaScript作为MSDN文章链接:

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

您可以在这里工作在SharePoint Javascript对象模型,并使用类似SP.ListOperation.Selection.getSelectedItems();或者你可以使用完整的自定义代码。
从你的aspx页面名称我可以看到你想“使用积极”(顺便说一句:不会“ActivateUser.aspx”更好?)。如果这仅仅意味着在另一个列表中设置一个属性,您可以使用SharePoint OM来实现,如果它是一些自定义的东西,您需要一个web服务,您可以从JavaScript调用并“激活用户”。您当然可以始终访问当前表单并传递用户输入的值。或者你可以创建一个自定义的save button,它可以在保存前做一些事情(激活用户)。

最后:你也可以在你的自定义按钮中有回传,你可以做任何你想做的事情。

+0

感谢您的回复,但不幸的是我仍然有点困惑。例如:我假设在我的MakeUserActive.aspx(或者你正确地建议ActivateUser.aspx)页面,我将能够通过Request.Form访问表单属性,但这是空的。你能否详细说明回发情况? –

+0

我不确定SharePoint奇迹般地做了什么,但Request.Form无法填充,因为CommandAction是一个JavaScript命令 - 因此它所能做的只是重定向。新表格因此无法了解旧表格。只是谷歌的色带回发,你会发现很多例如这个:http://blog.dennus.net/2010/07/20/ribbon-buttons-with-postback-in-sp2010/ –

+0

好吧,那就是关键字我正在寻找“丝带回发”。非常感谢你。本文解释了所有感兴趣的内容:http://blogs.msdn.com/b/sridhara/archive/2010/12/30/implementing-a-post-back-button-in-a-sharepoint-2010-web-部分与上下文-ribbon.aspx –