2

既存の編集ダイアログを変更し、このようにカスタム ボタンを追加する SharePoint の機能を正常に作成しました。

変更された共有ポイント ダイアログ

ユーザーがこのようなカスタムボタンをクリックすると、データを返すことができることを認識しています。

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

ここに詳しく書かれているように

リスト アイテムを処理し、必要なアクションを実行できるようになりましたが、このボタンが変更コンテキスト (つまり、sharepoint のアイテム編集ダイアログ内) に追加されている場合、データ自体への変更を保存したい場合はどうすればよいでしょうか?

カスタムボタンを使用すると、ユーザーがデータに加えた変更が失われることを常に意味するように思えます。これを回避する方法はありますか?

4

1 に答える 1

4

良い質問!

実際には既にソリューションにリンクしています。現在、CommandAction として URL を使用してユーザーをリダイレクトしているだけです。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 でそれを行うことができます。カスタムのものである場合は、JavaScript から呼び出して「ユーザーをアクティブ化」できる Web サービスが必要になります。もちろん、いつでも現在のフォームにアクセスして、ユーザーが入力した値を渡すことができます。または、保存する前にいくつかの処理 (ユーザーのアクティブ化) を行うカスタム保存ボタンを作成することもできます。

最後に: カスタム ボタンにポストバックを設定することもできます。

于 2012-06-14T07:40:24.193 に答える