Dynamics CRM 2011 Xrm.Page サンプルライブラリ紹介 その 4
みなさん、こんにちは。
クライアントサイドスクリプト紹介第 4 回は、ナビゲーション操作の
サンプルを紹介していきます。
サンプルを確認するにあたり準備があるため、こちらの記事を
ご覧いただき、サンプルのインストールを行ってください。
サンプル紹介
今回紹介するサンプルは、以下のフォルダにあります。
SDK\SampleCode\JS\FormScripts\SDK.NavigationSamples.js SDK\SampleCode\JS\FormScripts\SDK.NavigationCollection.js
ナビゲーション操作サンプル
ナビゲーションも、フォームの要素同様 Xrm.Page オブジェクトモデルで 操作を行います。表示/非表示の切り替えや、表示文字列の変更が可能です。
[toggleVisibleItems 関数] ナビゲーションアイテムの表示/非表示を切り替えます。方法は 他のオブジェクトと同じです。
toggleVisibleItems: function () {
// Xrm.Page.ui.nagivation.items の get メソッドで
// フォーム上のナビゲーションアイテムを取得
var items = Xrm.Page.ui.navigation.items.get();
for (var i in items) {
// ナビゲーションアイテムを 1 つ取得
var item = items[i];
// アイテムが表示されているか確認
if (item.getVisible()) {
// 表示されている場合は非表示に設定
item.setVisible(false);
}
else {
// 非表示の場合は表示に設定
item.setVisible(true);
}
}
}
[showNavigationItemInfo 関数]
ナビゲーションを操作する際に、ナビゲーションアイテムの ID が
必要になる場合があります。以下のサンプルでは、アイテムの ID や
表示の状態を取得して、別のウィンドウに表示します。
showNavigationItemInfo: function () {
// 情報表示用の HTML を作成
var html = "<html><head><title>Navigation Items Info</title>";
html += "<style type=\"text/css\">body { font-family:Calibri;}";
html += "table {border:1px solid gray; border-collapse:collapse;}";
html += "th {text-align:left; border:1px solid gray;}";
html += "td {border:1px solid gray;}</style>";
html += "</head><body>";
// 別関数を呼び出して情報を取得
html += SDK.NavItemSamples.buildNavigationInfoTable();
html += "</body></html>";
var myWindow = window.open("", "_blank");
myWindow.document.open();
myWindow.document.write(html);
myWindow.document.close();
},
[buildNavigationInfoTable 関数]
ナビゲーションアイテムの情報を取得します。
buildNavigationInfoTable: function () {
var html = "<table><thead><th>Item Name</th><th>Item Id</th><th>Is Visible</th></thead><tbody>";
// Xrm.Page.ui.nabigation.items の get メソッドで
// 全てのナビげージョンアイテムを取得
var items = Xrm.Page.ui.navigation.items.get();
for (var i in items) {
// ナビゲーションアイテムを 1 つ取得
var item = items[i];
// getLabel、getId、getVisible メソッドで、アイテムの情報取得
html += "<tr><td>" + item.getLabel() + "</td>" +
"<td>" + item.getId() + "</td>" +
"<td>" + item.getVisible() + "</td>";
}
html += "</tbody></table>";
return html;
},
※特定のナビゲーションアイテムを get メソッドで取得したい場合には
アイテムの ID が必要となります。フィールドと違って ID が分かりづらい
問題がありますが、こちらのサンプル関数で簡単に確認できます。
ナビゲーションアイテム操作サンプル
ナビゲーションは複数のナビゲーションアイテムを含んでいます。この
サンプルでは、それらのアイテムに対する操作方法を紹介しています。
[listFirstActivityItem 関数]
ナビゲーション内でいちばん最初のアイテムを取得、表示します。
listFirstActivityItem: function () {
// Xrm.Page.ui.navigation.items の get メソッドに番号を渡して
// 一番初めのナビゲーションアイテムを取得
var firstItem = Xrm.Page.ui.navigation.items.get(0);
if (firstItem != null) {
alert("The first navigation item is '" + firstItem.getLabel() + "'.");
}
else {
alert("There are not currently any navigation items on the form.");
}
},
[doesActivityItemExist 関数]
具体的なアイテム ID を渡してナビゲーションアイテムを取得します。
doesActivityItemExist: function () {
// Xrm.Page.ui.navigation.items の get メソッドにアイテム ID を渡して
// 活動のナビゲーションアイテムを取得
var activityItem = Xrm.Page.ui.navigation.items.get("navActivities");
// 取得できたか確認
if (activityItem != null) {
alert("The '" + activityItem.getLabel() + "' item does exist in this form's navigation area.");
}
else {
alert("The 'Activities' item does not exist in this form's navigation area.");
}
},
[showNavItemsCount 関数]
ナビゲーションアイテムの個数を表示します。
showNavItemsCount: function () {
// Xrm,Page.ui.navigation.items の get メソッドで
// 全てのナビゲーションアイテムを取得
var items = Xrm.Page.ui.navigation.items.get();
// getLength メソッドで個数を確認
var count = Xrm.Page.ui.navigation.items.getLength();
if (items.length == count) {
alert("There are " + count + " navigation item(s) on the form.");
}
else {
alert("An error has occurred:\n\nUnable to determine how many navigation items are on the form.");
}
}
まとめ
ナビゲーションアイテムも、コントロールやセクションと同じ方法で
操作が可能であることを、このサンプルは示しています。違う点としては
アイテムの ID 情報が UI から取得できないことです。例えば UI から活動を
確認すると、以下のように Account_ActivityPointers ですが、アイテム ID は
navActivities となっています。
次回からは、UI 上に直接表示されないオブジェクトの扱いを紹介します。
‐ Dynamics CRM サポート 中村 憲一郎