Dynamics CRM 2013/Fall '13 コマンドバーのカスタマイズ その 4
みなさん、こんにちは。
前回に引き続き、コマンドバーのカスタマイズを紹介します。今回
より複雑な表示の制御と複数言語対応を紹介しますが、手順は前回
までの記事からの続きとなります。
Dynamics CRM 2013/Fall '13 コマンドバーのカスタマイズ その 1
Dynamics CRM 2013/Fall '13 コマンドバーのカスタマイズ その 2
Dynamics CRM 2013/Fall '13 コマンドバーのカスタマイズ その 3
シナリオ
前回追加したカスタムボタンは常に表示されているが、以下の条件
を満たした場合にのみ表示したい。
- グリッドでレコードを 1 件選択している
- エンティティでビジネスプロセスフローが有効になっている
またボタン名や概要が日本語のみであるが、今後のために複数言語
対応としたい。
複数言語対応
まず複数言語に対応させます。
1. Customizations.xml を Visual Studio で開き、 XML スキーマを
適用します。
2. RibbonDiffXml 配下の LocLabels を以下の様に変更します。
Id: 一意となる値です。参照される ID であるためこの ID 自体は
意味を持ちませんが、どのようなラベルを含むかわかりやすい
名前を付けると管理が容易です。
Title ノード
languagecode : 表示する言語コードです。1041 日本語 1033 英語
description : 表示する文字列です。
3. カスタムボタンの定義を以下の様に変更します。
ラベル類の要素には $LocLabels: に続いて LocLabel の ID を指定
することで多言語対応となります。
4. 変更を保存して、ソリューションのインポートを行います。
5. 言語を英語に切り替えた場合、以下の様に表示されます。
高度な表示のコントロール
前回は EnableRule、DisplayRule ともに CrmClientTypeRule を利用
しましたが、今回の要件を満たすために以下のルールを使用します。
EnableRule の SelectionCountRule
選択されているレコード数によって true/false を返す
DisplayRule の EntityPropertyRule
エンティティの設定によって true/false を返す
1. RuleDefinitions | EnableRules に以下内容を追加します。
Minimum : 選択すべき最小件数
Maximum : 選択すべき最大件数
AppliesTo : 適用先。SelectedEntity はグリッドの場合
上記の場合、1 件のレコードが選択されている場合にのみ条件を
満たします。
2. RuleDefinitions | DisplayRules に以下内容を追加します。
EntityName : 対象となるエンティティ名
PropertyName : 確認する設定名
PropertyValue : 確認する設定の値
上記の場合、取引先企業エンティティでビジネスプロセスフロー
が有効なら true を返します。
3. 前回追加した CommnadDefinition を以下のように変更します。
4. 変更を保存します。
5. ダウンロードした zip ファイル内の Customizations.xml を、保存
したファイルで上書きします。
6. ブラウザに戻り、設定のカスタマイズ | ソリューションより、
変更したソリューションのインポートを実行します。
7. ソリューションのインポート完了後、すべてのカスタマイズを
公開し、ブラウザをリフレッシュします。
8. 取引先企業を表示し、レコードを選択していない状態の場合、
カスタムボタンが表示されないことを確認します。
9. 1 件レコードを選択することでボタンが表示されることと、2 件
以上選択すると再び表示されないことを確認します。
10. 1 件のみレコードを選択してもカスタムボタンが表示されない
場合、取引先企業でビジネスプロセスフローが有効になっているか
確認してください。
- 中村 憲一郎