この記事では、クライアント API navigateTo メソッドを使用してモデル駆動型アプリの生成ページに移動する例を示します。 生成ページをインラインまたはダイアログで開く方法と、レコード ID やカスタム データなどの入力パラメーターを渡す方法について説明します。
注
このメソッドは、統一インターフェイス上でのみサポートされます。
ページ ID を検索する
次の各例では、ターゲットの生成ページの ID が必要です。 ページ ID を検索するには:
- アプリ デザイナーで、生成ページを含むモデル駆動型アプリを開きます。
- ページの一覧で生成ページを選択します。
- プロパティ ウィンドウで、[ 生成] ページ フィールドに表示されている GUID をコピーします。
パラメーターなしで生成ページをインラインで開く
入力パラメーターのないページ全体のインライン ビューとして生成ページを開きます。
var pageInput = {
pageType: "generative",
pageId: "<genPageID>"
};
var navigationOptions = {
target: 1
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions)
.then(
function () {
// Called when page opens
}
).catch(
function (error) {
// Handle error
}
);
レコード コンテキストで生成ページをインラインで開く
ページが特定のレコードを読み込んで表示できるように、 recordId と entityName を生成ページに渡します。
これらのパラメーターを受け入れるように、ターゲットの生成ページを設定する必要があります。
var pageInput = {
pageType: "generative",
pageId: "<genPageID>",
entityName: "account",
recordId: "00aa00aa-bb11-cc22-dd33-44ee44ee44ee" // replace with actual record GUID
};
var navigationOptions = {
target: 1
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions)
.then(
function () {
// Called when page opens
}
).catch(
function (error) {
// Handle error
}
);
カスタム データを使用して生成ページをインラインで開く
カスタム キーと値のペアを含む data オブジェクトを生成ページに渡します。
これらのパラメーターを受け入れるように、ターゲットの生成ページを設定する必要があります。
var pageInput = {
pageType: "generative",
pageId: "<genPageID>",
data: { status: "active", category: "premium" }
};
var navigationOptions = {
target: 1
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions)
.then(
function () {
// Called when page opens
}
).catch(
function (error) {
// Handle error
}
);
生成ページを中央に配置されたダイアログとして開く
中央に配置されたダイアログで生成ページを開き、レコードコンテキストとカスタムデータの両方を渡します。 必要に応じて width と height を調整します。
var pageInput = {
pageType: "generative",
pageId: "<genPageID>",
entityName: "account",
recordId: "00aa00aa-bb11-cc22-dd33-44ee44ee44ee", // replace with actual record GUID
data: { view: "summary" }
};
var navigationOptions = {
target: 2,
position: 1,
width: { value: 70, unit: "%" },
height: { value: 80, unit: "%" },
title: "<dialog title>"
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions)
.then(
function () {
// Called when the dialog closes
}
).catch(
function (error) {
// Handle error
}
);
サイド ダイアログとして生成ページを開く
position: 2を使用して、生成ページをサイド ダイアログとして開きます。
var pageInput = {
pageType: "generative",
pageId: "<genPageID>"
};
var navigationOptions = {
target: 2,
position: 2,
width: { value: 500, unit: "px" },
title: "<dialog title>"
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions)
.then(
function () {
// Called when the dialog closes
}
).catch(
function (error) {
// Handle error
}
);
サポートされていません: サイド ウィンドウで生成ページを開く
Important
Xrm.App.sidePanes.createPane()を使用して生成ページを開く機能は現在サポートされていません。
// Not supported — page content doesn't render
const pane = await Xrm.App.sidePanes.createPane({
title: "My Generative Page",
paneId: "GenPage",
canClose: false,
width: 400
});
pane.navigate({ pageType: "generative", pageId: "<genPageID>" });
代わりに、 Xrm.Navigation.navigateTo を使用して中央または横のダイアログを使用します。
クライアント API を使用して生成ページ内から移動する
生成ページ コンポーネント内から移動する場合は、React コンポーネント スコープでは直接アクセスできないため、 (window as any).Xrm を使用して Xrm オブジェクトにアクセスします。
レコード コンテキストとカスタム データを含む別の生成ページに移動する
const xrm = (window as any).Xrm;
xrm.Navigation.navigateTo({
pageType: "generative",
pageId: targetPageId,
entityName: "account",
recordId: selectedRecordId,
data: { view: "summary" }
});
注
モデル駆動型アプリ内を移動する場合は、生の URL を作成したり、 window.locationを操作したりしないでください。
URL を使用して生成ページに移動する (外部呼び出し元のみ)
次の構造の URL を作成することで、生成ページに移動できます。
https://<your-org>.crm.dynamics.com/main.aspx?appid={app-id}&pagetype=genux&id={page-id}&recordid={recordId}&entityname={entityName}&data={encoded-json}
data パラメーターを JSON として URL エンコードする必要があります。 たとえば、カスタム フィルター オブジェクトを渡すには、次のようにします。
https://<your-org>.crm.dynamics.com/main.aspx?appid={app-id}&pagetype=genux&id={page-id}&data=%7B%22status%22%3A%22active%22%7D
これらのパラメーターを受け入れるように、ターゲットの生成ページを設定する必要があります。