Question

J'ai un scénario où je dois créer une page d'application qui est installée dans le menu de la BCE d'une liste spécifique seulement. Est-ce possible? ou est la seule façon de le faire associer le fichier d'éléments avec un type de liste par exemple liste de tâches?

Était-ce utile?

La solution

Oui, il est possible de le faire: créer menu éléments de la BCE que pour une liste .... et encore mieux décider à l'exécution le nombre d'éléments à mettre dans le menu de la BCE. Pour cela, vous avez besoin de compétences javascript.

SharePoint nous donner quelques crochets pour ajouter des éléments de la BCE personnalisés en utilisant javascript. Ce crochet est la fonction js: Custom_AddListMenuItems (m, ctx) . Mais le problème est de savoir comment ajouter des éléments dynamiques dans le droit de la BCE? La solution que je l'ai utilisé était de mettre en œuvre un synchrone appel Ajax à une ASPX personnalisée qui renvoie un xml avec des articles et de leurs actions. Voici le code:

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

Ce script doit être placé dans un webpart à côté de la liste webpart (dans une partie Web Content Editor par ex.)

L'idée est pas à moi, voici l'article original. Espérons que cela aide.

Autres conseils

Il doit être attaché à un modèle de liste (si vous utilisez les fonctionnalités côté serveur), qui a un identifiant spécifique. Je vous recommande de créer une fonctionnalité avec un modèle de liste cachée et instance de liste, puis relie votre BCE à ce modèle de liste.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top