カスタムアクションタグの登録ID属性の複数の値
-
16-10-2019 - |
質問
1つだけでなく複数の値を設定する能力があるのだろうか RegistrationId
の CustomAction
鬼ごっこ。
私はこのようなelement.xmlエントリを持っています:
<CustomAction
Id="ClassifyDialogButton.SharePoint.Ribbon.CustomTab"
Location="CommandUI.Ribbon"
Rights="EditListItems"
RegistrationType="List"
RegistrationId="101">
別の2つの登録IDを追加するためにそれを変更する方法を知っていますか?
解決
一般的なルールとして、XML属性は複数の値を持つように設計されていません。
興味深いことに、属性 オプションのようです, 、したがって、それを除外することで、非常に多くの場所にそれを一度に適用することが可能かもしれません(おそらく多すぎます)。
私の唯一の他の提案は、古き良き時代のコピーパステを行い、必要な各登録IDに1つのカスタムアクション要素を持っていることです。
他のヒント
あなたが本当に探しているのは、です SharePoint 2010 Fluent Ribbon API. 。これは、リボンで作業を簡素化するCodePlexプロジェクトです。膨大な量のサンプルやスクリーンショットなど、詳細なドキュメントがあります。
このソリューションの唯一の悪い点は、XMLリボン定義をFluentribbonリボン定義に書き換える必要があることです。しかし、コードの定義ははるかに柔軟であり、Fluentribbonはいくつかの追加機能を提供します。単純化された構文、フルレングスのドキュメント、定性的検証を提供するため、IMOは価値があります。
あなたの場合、結果のコードは次のようになります(機能的なレシーバークラスの内部、特徴的な方法で):
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);
ところで、 規定 メソッドには多くの過負荷がありますが、最も簡単な場合、2〜3個のパラメーションのみを提供する必要があります。
より多くのサンプルを見つけることができます プロジェクトサイトで.
PSをお願いします、ribbonutils.dllへの参照を追加し、GAC展開リストにレコードを追加することを忘れないでください(package.package、 'Advanced Tab'、add->既存のアセンブリ)
これは、Customaction XMLセクションを複製することで実現できます。カスタムアクションセクション全体をコピーして、1番目のカスタムアクションXMLセクションの下に貼り付けて、登録IDを変更したい次の登録IDに変更します。