Plusieurs valeurs d'attribut Enregistrement Id dans la balise d'action personnalisée
-
16-10-2019 - |
Question
Je me demande est-il possibilité de définir non seulement une, mais plusieurs valeurs de RegistrationId
dans la balise CustomAction
.
J'ai une entrée elements.xml comme ceci:
<CustomAction
Id="ClassifyDialogButton.SharePoint.Ribbon.CustomTab"
Location="CommandUI.Ribbon"
Rights="EditListItems"
RegistrationType="List"
RegistrationId="101">
Quelqu'un sait comment dois-je modifier pour ajouter deux autres RegistrationIds?
La solution
En règle générale, les attributs XML ne sont pas conçus pour avoir plus d'une valeur.
Fait intéressant, l'attribut semble être facultative , il peut être possible de l'appliquer à un grand nombre d'endroits à la fois en laissant dehors (probablement trop).
Ma seule autre suggestion serait de faire un bon vieux copier-coller façonné et ont un élément CustomAction pour chaque RegistrationId nécessaire.
Autres conseils
Qu'est-ce que vous cherchez vraiment, est SharePoint 2010 Fluent API ruban . Il est un projet Codeplex, ce qui simplifie le travail avec un ruban. Il a une documentation approfondie, y compris énorme quantité d'échantillons et de captures d'écran.
La seule mauvaise chose au sujet de cette solution est que vous devez réécrire la définition de votre ruban XML à la définition du ruban FluentRibbon. Mais les définitions de code sont beaucoup plus souples, et aussi FluentRibbon offre quelques fonctionnalités supplémentaires:. Syntaxe simplifiée, documentation pleine longueur et de validation qualitative, donc l'OMI, il vaut le coup
Dans votre cas, le code résultant ressemblera à ceci (dans la classe de récepteur caractéristique, dans la méthode FeatureActivated):
var myTab = new TabDefinition
{
Id = "MyTab",
Title = "My tab",
// etc, create your definition here...
};
// instantiate RibbonCustomAction class
var ribbonCustomAction = new RibbonCustomAction();
// add one or more ribbon definitions, which will be deployed
// in same scope.
// RibbonCustomAction acts like a container for such definitions.
ribbonCustomAction.AddTab(myTab);
// Let's provision our custom action
// receiverGuid is a random constant Guid, which must be unique
// in the feature scope. It is used for cleanup in FeatureDeactivating
// method.
ribbonCustomAction.Provision(
receiverGuid,
web,
ListTypes.GenericLibrary,
ListForms.All,
SPBasePermissions.ManageLists);
// Next, we can provision the same custom action again and again to different
// locations. For example, let's register it for Links list:
ribbonCustomAction.Provision(
receiverGuid,
web,
ListTypes.LinksList,
ListForms.All,
SPBasePermissions.ManageLists);
BTW, Mise à disposition méthode a beaucoup, en cas de surcharge la plus facile, vous devez fournir seulement 2-3 params.
Vous pouvez trouver plus d'exemples sur le site du projet .
P.S. S'il vous plaît, ne pas oublier d'ajouter une référence à RibbonUtils.dll et ajouter enregistrement dans la liste de déploiement GAC (emballage.Emballage, « onglet Avancé », Ajouter -> assemblage existant)
Ceci peut être accompli en dupliquant la section xml CustomAction. Il suffit de copier la section d'action ensemble personnalisé et coller ci-dessous la section 1er CustomAction xml et le changement RegistrationId à la prochaine RegistrationId que vous voulez qu'il apparaisse dans.