5

SharePoint リボンにカスタム アクション ボタンを作成し、そのボタンから C# コード ビハインドを呼び出そうとしています。これを行う方法についての良い詳細を見つけることができませんでした。誰かがこれを行う方法を知っているか、これを行う方法に関する良い情報を持っていますか? それが役立つかどうかはわかりませんが、これは私のカスタムアクションボタンのコードです. ありがとう!

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">

  <CustomAction

    Id="CustomRibbonButton"
    RegistrationId="101"
    RegistrationType="List"
    Location="CommandUI.Ribbon"
    Sequence="5"
    Title="Move Documents">

    <CommandUIExtension>
      <CommandUIDefinitions>
        <CommandUIDefinition Location="Ribbon.Documents.Manage.Controls._children">
          <Button
              Id="Ribbon.Documents.New.MoveButton"
              Alt="Move Documents"
              Sequence="5"
              Command="Move_Button"
              Image32by32="/_layouts/images/Skynet/WinEarth32x32.png"
              Image16by16="/_layouts/images/Skynet/WinEarth16x16.png"
              LabelText="Move Documents"
              TemplateAlias="o1" />
        </CommandUIDefinition>
      </CommandUIDefinitions>

      <CommandUIHandlers>
        <CommandUIHandler
          Command="Move_Button"
          CommandAction="javascript:alert('SharePoint 2010 makes me angry!');" />
      </CommandUIHandlers>

    </CommandUIExtension>
  </CustomAction>

</Elements>
4

2 に答える 2

1

CommandUIHandlerはJavaScript(クライアント側のオブジェクトモデルを含む)を実行できますが、サーバーオブジェクトモデルコードを実行する場合は、AndrewConnellによるこのMSDNの記事で説明されているポストバックメカニズムを使用できます。彼は、リボンボタンによって生成されるポストバックイベントをリッスンするWebパーツを作成します。

または、Webサービスを実装し、JavaScript CommandUIHandlerから呼び出すこともできます(ajax呼び出し)。そのアプローチがここで使用されます。(2016-02-01にはアクセスできなくなりました)

于 2013-01-22T12:50:23.243 に答える
0

参考になるかどうかわかりませんが、ちょっとしたリボンの作業をするときは、http: //quickdeploydoc.codeplex.comプロジェクトのコードを使用しました。ユーザーをページに送信してから、元に戻しました。それが役に立てば幸い。

  <CustomAction Id="8CC3766E-1429-498c-9EEA-B2DFA784C360"
                RegistrationType="ContentType"
                RegistrationId="0x0101"
                Location="EditControlBlock"
                Title="Add to Quick Deploy"
                Sequence="1000"
                Description="Add this document to the next Quick Deploy job.">
    <UrlAction Url="javascript:window.location='/_layouts/QuickDeploy/QuickDeployDoc.aspx?SiteUrl={SiteUrl}&amp;ItemUrl={ItemUrl}&amp;returnUrl='+window.location" />
  </CustomAction>

protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                QuickDeploy quidkDep = new QuickDeploy();

                string siteUrl = Request["SiteUrl"];
                string webUrl = SPContext.Current.Web.Url;
                string itemUrl = Request["ItemUrl"];

                webUrl = siteUrl.Remove(0, webUrl.Length);

                quidkDep.QuickDeployment(siteUrl, webUrl, itemUrl);

                ClientScript.RegisterClientScriptBlock(this.GetType(), "GoBack", "function GoBack(){document.location='" + Request["returnurl"].ToString() + "';}", true);
            }
            catch (Exception ex)
            {
                throw new Exception("Could not save document to Quick Deploy job. " + ex.ToString());
            }
        }
于 2013-01-22T00:12:10.557 に答える