Dynamics CRM 2013/Fall '13 コマンドバーのカスタマイズ その 6

みなさん、こんにちは。

前回に引き続き、アプリケーションリボンを紹介ます。今回は
エンティティコマンドバーに対するカスタマイズを紹介しますが、
手順は前回までの記事からの続きとなります。

Dynamics CRM 2013/Fall '13 コマンドバーのカスタマイズ その 1
Dynamics CRM 2013/Fall '13 コマンドバーのカスタマイズ その 2
Dynamics CRM 2013/Fall '13 コマンドバーのカスタマイズ その 3
Dynamics CRM 2013/Fall '13 コマンドバーのカスタマイズ その 4
Dynamics CRM 2013/Fall '13 コマンドバーのカスタマイズ その 5

シナリオ

全てのエンティティグリッドコマンドバーにカスタムボタンを
追加する。カスタムボタンは以前追加したものを再利用する。
場所は前回同様、新規ボタンの右横とする。

※カスタムボタンはその 3 で追加したものを利用します。

カスタムボタンを追加する

アプリケーションリボンは、高度な検索やフォームエディター
など特殊なフォームのリボン以外にも、すべてのエンティティ
コマンドバーに対するカスタマイズを行うことが可能です。

1. Customizations.xml を開き、ImportExportXml ノード配下の
RibbonDiffXml | CustomActions に CustomAction を追加します。

image

Location の探し方は後で紹介します。

2. ボタンの追加、コマンド、各種ルールの追加は以前紹介した
方法と同じです。以下のように変更を追加します。

[CustomAction 内の CommandUIDefinition]
image

[CommandDefinition]
image

[RuleDefinitions]
image

[LocLabels]
image

3. 変更を保存してソリューションをインポートします。

4. カスタマイズを公開後、ブラウザをリフレッシュします。

5. 取引先担当者エンティティを開きます。この時点ではカスタム
ボタンは表示されません。任意のレコードを 1 件選択して、以下
のようにカスタムボタンが出ることを確認します。

image

6. 潜在顧客など他のエンティティでも確認します。

image

7. 取引先企業を確認すると、前回のカスタマイズと合わせて
カスタムボタンが 2 つ表示されます。

image

追加先コントロール ID と Sequence の確認方法

既存コマンドバーの情報は、SDK の以下のフォルダに存在します。

SDK\Resources\ExportedRibbonXml

1. 上記パスにある applicationRibbon.xml を Visual Studio で開きます。

2. RibbonDefinitions | RibbonDefinition | UI | Ribbon | Tabs 配下にある
Tab ノードを順番に確認します。すべてのエンティティを対象として
いるため、本来エンティティ名が入る箇所は {!EntityLogicalName} と
指定されています。
image

3. 配下にあるグループとコントロールより追加先コントロール ID を
確認します。

image

3. 配下のボタンを確認して、それぞれの Sequence 番号を確認します。
今回新規ボタンは Secuence 番号 10 なので、カスタムボタンでは 11
を利用しました。

追加のシナリオ

カスタムボタンを取引先企業、取引先担当者、潜在顧客、営業案件、
サポート案件にのみ表示したい。

上記シナリオを満たすには、それぞれのエンティティのコマンドバー
をカスタマイズする方法とアプリケーションリボンでカスタマイズを
行う方法があります。ここではアプリケーションリボンを利用します。

1. すでにすべてのエンティティに対してボタンを表示できる状態に
なっているので、DisplayRule を利用して特定のエンティティにのみ
ボタンを表示するように制御します。以下 DisplayRule を追加します。

image

OrRule : 複数の条件を Or で判定
EntityRule : 指定したエンティティ、場所で判定。
グリッドを対象にしているため、context は HomePageGrid 指定

2. 作成したルールを CommandDefinition で使用します。

image

3. 変更を保存してソリューションのインポート、カスタマイズ
の公開、ブラウザのリフレッシュを行い動作を確認します。

ソリューションにエンティティを含めたくない場合、上記の
方法でアプリケーションリボンのみを使用してコマンドバー
のカスタマイズを行うことも可能です。

- 中村 憲一郎