次の方法で共有


クライアント API を使用して生成ページとの間を移動する

この記事では、クライアント API navigateTo メソッドを使用してモデル駆動型アプリの生成ページに移動する例を示します。 生成ページをインラインまたはダイアログで開く方法と、レコード ID やカスタム データなどの入力パラメーターを渡す方法について説明します。

このメソッドは、統一インターフェイス上でのみサポートされます。

ページ ID を検索する

次の各例では、ターゲットの生成ページの ID が必要です。 ページ ID を検索するには:

  1. アプリ デザイナーで、生成ページを含むモデル駆動型アプリを開きます。
  2. ページの一覧で生成ページを選択します。
  3. プロパティ ウィンドウで、[ 生成] ページ フィールドに表示されている 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
        }
    );

レコード コンテキストで生成ページをインラインで開く

ページが特定のレコードを読み込んで表示できるように、 recordIdentityName を生成ページに渡します。 これらのパラメーターを受け入れるように、ターゲットの生成ページを設定する必要があります。

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
        }
    );

生成ページを中央に配置されたダイアログとして開く

中央に配置されたダイアログで生成ページを開き、レコードコンテキストとカスタムデータの両方を渡します。 必要に応じて widthheight を調整します。

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 を使用して中央または横のダイアログを使用します。

生成ページ コンポーネント内から移動する場合は、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 を作成することで、生成ページに移動できます。

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

これらのパラメーターを受け入れるように、ターゲットの生成ページを設定する必要があります。