2

我已經在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編輯項對話框)如果你想保存數據本身的變化怎麼辦?

對我來說,使用您的自定義按鈕似乎總是意味着失去了用戶對數據所做的任何更改。有沒有解決的辦法?

回答

4

好問題!

你其實已經解掛:當然,如果將用戶重定向到另一個頁面而不保存當前條目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 –