質問

特定のリストのみのECBメニューにインストールされているアプリケーションページを作成する必要があるシナリオがあります。これは可能ですか?または、要素ファイルをリストタイプEGタスクリストに関連付ける唯一の方法ですか?

役に立ちましたか?

解決

はい、それを行うことができます:ecbアイテムメニューをリストのみを作成します....そして、実行時にECBメニューに入れるアイテムの数をさらに決定します。このためには、JavaScriptスキルが必要です。

SharePoint JavaScriptを使用してカスタムECBアイテムを追加するためのフックを提供します。このフックはJS関数です: custom_addlistmenuitems(m、ctx). 。しかし、問題は、ECBに動的アイテムを追加する方法です。私が使用したソリューションは、aを実装することでした 同期 アイテムとそのアクションでXMLを返すカスタムASPXへのAJAXコール。これがコードです:

<script language="javascript">

function Custom_AddDocLibMenuItems(m, ctx)
{    
  //debugger;

  var request;
  var url = ctx.HttpRoot + 
      "/_layouts/GetCommands.aspx?ListID=" + ctx.listName + 
      "&ItemID=" + currentItemID + 
      "&UserId=" + ctx.CurrentUserId + 
      "&DateTime=" + Date();

   if ( window.XMLHttpRequest )
   {
      request = new XMLHttpRequest();
      request.open("GET", url, false);
      request.send(null);
   }
   else if ( window.ActiveXObject )
   {
      request = new ActiveXObject("Microsoft.XMLHTTP");
      if ( request )
      {
         request.open("GET", url, false);
         request.send(); 
      }
   }

   if ( request )
   {   
      var commands = request.responseXML.getElementsByTagName("Command");
      // for each command found in the returned XML, extract the name, 
      // image Url and script, and a new menu item with these properties
      for ( var i = 0; i < commands.length; i++ )
      {
         var cmdName = commands[i].getElementsByTagName(
            "Name")[0].firstChild.nodeValue;
         var imageUrl = commands[i].getElementsByTagName(
            "ImageUrl")[0].firstChild.nodeValue;
         var js = commands[i].getElementsByTagName(
            "Script")[0].firstChild.nodeValue;
         var addSep = commands[i].getElementsByTagName(
            "AddSep")[0].firstChild.nodeValue;

         CAMOpt(m, cmdName, js, imageUrl);

         if (addSep == "True")
            CAMSep(m);
      }

      // if at least one command was actually added, add a separator
      if ( commands.length > 0 )
         CAMSep(m);
   }

   // returning false makes SharePoint render the rest of the standard menu
   return false;   
}

function Custom_AddListMenuItems(m, ctx)
{
    Custom_AddDocLibMenuItems(m, ctx);
}
</script>

このスクリプトは、リストWebPartの隣のWebパートに配置する必要があります(Ex。のコンテンツエディターWebパーツ)。

アイデアは私のものではありません、 これが元の記事です. 。これが役立つことを願っています。

他のヒント

特定のIDを持つリストテンプレート(サーバー側の機能を使用している場合)に添付する必要があります。非表示リストテンプレートとリストインスタンスを備えた機能を作成し、そのリストテンプレートにECBを添付することをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top