0

次のプロジェクトをフォローしています: http://www.thorntontechnical.com/tech/sharepoint/sharepoint-2010-context-menu-item-with-custom-code

ELEMENTS.XML

   <?xml version="1.0" encoding="utf-8"?>
   <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
     <CustomAction Id="SPTest.CustomMenuItem.ButtonClicked"
             RegistrationType="FileType"
            RegistrationId="dtsx"
            Location="EditControlBlock"
            ImageUrl="/_layouts/IMAGES/DOCLINK.GIF"
            Sequence="600"
            Title="Execute Package"
            Description="Executed Selected Package"
            ControlAssembly="SPTest.CustomMenuItem, Version=1.0.0.0, Culture=neutral,    PublicKeyToken=beb14bc625e99e7f"
            ControlClass="SPTest.CustomMenuItem.CustomItemAction"
            >
<UrlAction Url="javascript:__doPostBack('SPTest.CustomMenuItem.CustomItemAction',  {ItemId});" />
</CustomAction>
 </Elements>

パッケージ.テンプレート.XML

    <?xml version="1.0" encoding="utf-8"?>
 <Solution xmlns="http://schemas.microsoft.com/sharepoint/">
 <Assemblies>
  <Assembly Location="SPTest.CustomMenuItem.dll"  DeploymentTarget="GlobalAssemblyCache">
    <SafeControls>
      <SafeControl Assembly="SPTest.CustomMenuItem, Version=1.0.0.0, Culture=neutral, PublicKeyToken=beb14bc625e99e7f" 
                 Namespace="SPTest.CustomMenuItem" TypeName="*" Safe="True"        SafeAgainstScript="False" />
    </SafeControls>
  </Assembly>
</Assemblies>
</Solution>

そのため... Web.config ファイルでは、SafeControl でアセンブリを見つけることができます

実行するクラス

   using System.IO;
   using System;
   using System.Collections.Generic;
   using System.Linq;
   using System.Text;
   using Microsoft.SharePoint;
   using Microsoft.SharePoint.WebControls;

    namespace SPTest.CustomMenuItem
    {
        public class CustomItemAction : SPLinkButton
        {
            protected override void OnLoad(EventArgs e)
            {
                this.EnsureChildControls();
                base.OnLoad(e);
                if (this.Page.Request["__EVENTTARGET"] ==   "SPTest.CustomMenuItem.ButtonClicked")
                {
                    int itemId = Convert.ToInt32(this.Page.Request["__EVENTARGUMENT"]);
                    System.IO.TextWriter writer = new  StreamWriter(@"C:\XXXXX\XXXXX\XXXXX\custommenuoutput.txt", true);
                    writer.WriteLine("Event Fired at:" + DateTime.Now.ToLongTimeString() + ": Item ID:" + itemId.ToString());
                    writer.Close();
                }
            }
        }
    } 

ご覧のとおり、Sharepoint に割り当てられた SSIS パッケージを実行することが目的です。dtsx タイプのすべてのファイルに、[パッケージの実行] オプションを含む ECB メニューが表示されました。したがって、この下部をクリックすると、イベントが機能しません...何をしなければならないのかわかりません...助けていただければ幸いです。

4

2 に答える 2

0

メンションしているページに再度アクセスします。

http://www.thorntontechnical.com/tech/sharepoint/sharepoint-2010-context-menu-item-with-custom-code

彼の編集 (2012 年 2 月 16 日) は、この問題を修正します (「SharePoint にコントロールを読み込むように指示する必要もあります」)。

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Control ControlAssembly="SPTest.CustomMenuItem, Version=1.0.0.0, Culture=neutral, PublicKeyToken={PublicKeyToken}"
ControlClass="SPTest.CustomMenuItem.CustomItemAction" Sequence="50" Id="AdditionalPageHead"/>
<CustomAction ...

その後、要素内の属性ControlAssemblyとを省略できます。これは彼の投稿では行われていませんが、コメントで言及されています (私はそれを試してみましたが、うまくいきました)。ControlClassCustomAction

彼のブログ投稿の他のコメントにも注意してください。これは彼の例ですでに実装されていますが、それでも注目に値します。

于 2012-10-26T10:49:44.660 に答える