Dynamics CRM Online 2015 Update 1 SDK 新機能: フォームスクリプトのサブグリッドの制御 その 1

みなさん、こんにちは。

今回から Dynamics CRM Online 2015 Update 1 で提供される SDK の
新機能よりフォームスクリプトのサブグリッド制御を紹介します。

概要

Dynamics CRM Online 2015 Update 1 まで、フォームスクリプトを
利用したサブグリッドの操作は Refresh のみサポートしていました。
今回のリリースでは以下が追加されました。

追加されたオブジェクト
- GridControl : サブグリッド自体の操作用
- Grid : グリッドに含まれる行 (レコード) の操作用
- GridRow : 特定の行 (レコード) の操作用
- GridRowData : レコードの特定列の操作用
- GridEntity : グリッドのエンティティ情報の操作用
- ViewSelector : グリッドのビューの操作用

サポートされる操作
- サブグリッドの OnLoad イベントの管理、エンティティ名取得
- サブグリッド内の行の取得
- 選択されている行の取得
- サブグリッド内の行数
- サブグリッドのエンティティ情報の取得
- サブグリッドのビューの取得と操作

今回は検証用のフォームスクリプトの作成と GridControl の機能
について紹介します。

GridControl オブジェクト

フォームスクリプトより GridControl オブジェクトを取得するには
Xrm.Page.getControl(“<サブグリッド名”>) 関数を利用します。この
コントロールは通常のコントロールが持つ setFocus や Notificaiton
関数の他に、以下の関数を持ちます。

- addOnLoad/removeOnLoad : OnLoad イベントの管理
- getEntityName : エンティティ名の取得
- getGrid : Grid オブジェクトの取得
- getViewSelector : サブグリッドビューの取得

早速試してみましょう。

フォームスクリプトの開発と設定

1. ブラウザで Dynamics CRM Online に接続します。

2. 設定 | カスタマイズ | システムのカスタマイズより Web リソース
を選択して、新規ボタンをクリックします。

image

3. 名前と表示名に「formscriptsample.js」と入力し、「種類」より
「スクリプト (JScript)」 を選び、「テキストエディター」をクリック
します。

image

4. 以下のスクリプトを貼り付けて、OK をクリックします。

function subGridSample()
{
  // サブグリッドの取得
  var contactGridControl = Xrm.Page.getControl("Contacts");
  // OnLoad 用の関数を作成
  var myContactsGridOnloadFunction = function () { alert("サブグリッドの OnLoad イベント") };
  // OnLoad イベントの設定
  contactGridControl.addOnLoad(myContactsGridOnloadFunction);

  // サブグリッドのエンティティ名を表示
  alert("サブグリッドのエンティティ名: " + contactGridControl.getEntityName());

  // サブグリッドの更新
  contactGridControl.refresh();
}

5. 公開ボタンをクリックしてから、画面を閉じます。

6. エンティティ | 取引先企業 | フォームを選択します。「取引先企業」
フォームを開きます。

image

7. 「フォームのプロパティ」ボタンをクリックします。

8. フォームの OnLoad イベントに開発した Web リソースと
関数を設定します。

image

9. フォームを一旦保存してから、カスタマイズを公開します。

動作確認

1. 任意の取引先企業レコードを開きます。

2. サブグリッドのエンティティ名が表示されます。

image

3. 続いて OnLoad イベントが発生してメッセージが表示されます。

image

まとめ

今回はまずフォームスクリプトの作成と GridControl の取得および
関数の実行を紹介しました。次回はいよいよサブグリッドの中身
についての操作を紹介します。お楽しみに!

- 中村 憲一郎