Можно ли прикрепить страницы приложения к определенному списку

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/246

Вопрос

У меня есть сценарий, в котором мне нужно создать страницу приложения, которая устанавливается только в меню ECB определенного списка.Это возможно?или это единственный способ сделать это, связав файл элементов с типом списка, например.список заданий?

Это было полезно?

Решение

Да, это возможно сделать:создайте меню элементов ECB только для списка.... и еще лучше решите во время выполнения, сколько элементов поместить в меню ECB.Для этого вам понадобятся навыки работы с JavaScript.

SharePoint предоставляет нам несколько возможностей для добавления пользовательских элементов ECB с помощью JavaScript.Этот крючок представляет собой функцию js: Custom_AddListMenuItems (м, ctx).Но проблема в том, как добавить динамические элементы в ЕЦБ, верно?Решение, которое я использовал, заключалось в реализации синхронный Ajax-вызов пользовательского aspx, который возвращает XML-файл с элементами и их действиями.Вот код:

<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>

Этот сценарий необходимо разместить в веб-части рядом с веб-частью списка (например, в веб-части редактора контента).

Идея не моя, вот оригинал статьи.Надеюсь, это поможет.

Другие советы

Его необходимо прикрепить к шаблону списка (если вы используете функции на стороне сервера), который имеет определенный идентификатор.Я рекомендую вам создать функцию со скрытым шаблоном списка и экземпляром списка, а затем прикрепить свой ECB к этому шаблону списка.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top