クライアント API を使用してモデル駆動型アプリでサイド ペインを作成する

開発者は、サイド ペインのコレクションを表す Xrm.App.sidePanes API を使用して、モデル駆動型アプリ内でアプリのサイド ペインを作成および管理できます。 createPane メソッドの呼び出しによって、モデル駆動型アプリ フォームまたはカスタム ページへのナビゲーションを可能にする新しいペインが追加されます。 サイド ペインに表示されるページは、最小幅が 300 ピクセル以内に収まり、ペインの幅に応じて大きな幅にサイズ変更する必要があります。

タブはサイド ペインに、"閉じることができない"、および "閉じることができる" の 2 つのグループで一覧表示されます。 各グループ内で、タブは作成された順序で一覧表示されます。 上のグループにはユーザーが閉じることができないペインが含まれ、下のグループにはユーザーが閉じることができるペインが含まれます。 "閉じることができない" グループはアプリを開いたときに設定されますが、"閉じることができる" グループはアプリ内のユーザー アクションに応じて追加されます。

プラットフォームに付属するタイトルと [閉じる] ボタン付きのヘッダーを使用するか、カスタム ヘッダーを使用することもできます。

サイド ペインにバッジを追加して、変更に注意が必要であることをユーザーに示すことができます。 バッジは、シンプルなドット、カウント、または画像の 3 つのモードをサポートしています。 既定では、ユーザーがペインに切り替えるとバッジはクリアされます。 バッジをいつクリアするかコントロールできます。

アプリのサイド ペインは Web ブラウザでのみサポートされており、ネイティブ プレーヤー内では使用できません。

注意

この API は、Model-driven apps のオンプレミス展開では利用できません。 詳細: クライアント API は Customer Engagement (on-premises) でサポートされていません

この表では、この記事のサンプルを紹介します。

例 対象
サイド ペインに生成 AI ページを表示する サイド ウィンドウを作成し、その ID で生成 AI ページに移動する方法。
サイド ウィンドウに既定のビューを表示する 既定のテーブル ビューを閉じることができないサイド ペインに表示する方法。
テーブル行を表示する 非表示のヘッダーと指定した幅を持つ、閉じられるサイド ペインにレコードを表示する方法。
Web リソースを表示する HTML Web リソースを閉じることのできないサイド ペインに表示する方法。
サイド ペインを管理 ペインを折りたたむ、展開する、サイズ変更する、閉じる、バッジを設定する方法。
Xrm.App.panels.loadPanel で使用する サイド ウィンドウをcreatePaneと共に使用し、loadPanelに切り替えて互換性の制限を回避する方法。

サイド ウィンドウに生成ページを表示する

navigate と生成ページ ID を指定して、ペインの pageType: "generative" メソッドを使用します。

const pane = await Xrm.App.sidePanes.createPane({
    title: "My Generative Page",
    paneId: "GenPage",
    canClose: true,
    width: 400
});

await pane.navigate({
    pageType: "generative",
    pageId: "<genPageID>"
});

レコード コンテキストとカスタム パラメーターを渡す方法については、「生成ページへの移動と生成ページからの移動」を参照してください。

サイド ウィンドウに既定のビューを表示する

次の例では、アプリのサイド ウィンドウにテーブルの既定のビューを表示する方法を示します。 予約リストと製品一覧が、閉じることのできないペインとして開きます。

Xrm.App.sidePanes.createPane({
    title: "Reservations",
    imageSrc: "WebResources/sample_reservation_icon",
    paneId: "ReservationList",
    canClose: false
}).then((pane) => {
    pane.navigate({
        pageType: "entitylist",
        entityName: "sample_reservation",
    })
});

名前、備品、予約の開始日など、アクティブな予約の一覧を含む Reservations テーブルのスクリーンショット。

Xrm.App.sidePanes.createPane({
    title: "Products",
    imageSrc: "WebResources/sample_product_icon",
    paneId: "ProductList",
    canClose: false
}).then((pane) => {
    pane.navigate({
        pageType: "entitylist",
        entityName: "sample_product",
    })
});

予約可能な製品の一覧を含む Products テーブルのスクリーンショット。

テーブル行を表示する

これは、サイド ペインに行を表示する方法の例です。 予約行がサイド ウィンドウで開き、既定のヘッダーが非表示になり、幅が 600 ピクセルに設定されます。

Xrm.App.sidePanes.createPane({
    title: "Reservation: Ammar Peterson",
    imageSrc: "WebResources/sample_reservation_icon",
    hideHeader: true,
    canClose: true,
    width: 600
}).then((pane) => {
    pane.navigate({
        pageType: "entityrecord",
        entityName: "sample_reservation",
        entityId: "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
    })
});

個別レコードを開いたアクティブな予約リストのスクリーンショット。

Web リソースを表示する

この例では、Web リソースをサイド ウィンドウに表示する方法を示します。 カスタム HTML ページがサイド ペインで開き、既定のヘッダーが表示され、[閉じる] ボタンが非表示になります。

Xrm.App.sidePanes.createPane({
                        title: "Registration Page",
                        imageSrc: "WebResources/msfp_SurveyIcon_32",
                        paneId: "RegistrationPage",
                        canClose: false
                    }).then((pane) => {
                        //navigate to webresource
                        pane.navigate({
                            pageType: "webresource",
                            webresourceName: "new_RegistrationPage",
                        })
                    });

サイド ペインの管理

サイド ペインを作成して、サイド ペイン内に行またはビューを表示することの他に、次のこともできます。

  • state メソッドを使用してプログラムでサイド ペインを折りたたむ:

    Xrm.App.sidePanes.state = 0;

  • state メソッドを使用してプログラムでサイド ペインを展開する:

    Xrm.App.sidePanes.state = 1;

  • 選択したペインを取得してプロパティを変更する:

    var lastPane = Xrm.App.sidePanes.getSelectedPane();
    lastPane.width = 400;

  • paneId パラメータを使用して特定のペインを取得する。

    var reservationPane = Xrm.App.sidePanes.getPane("ReservationList");
    reservationPane.close();

  • ペインのバッジ プロパティを有効にする:

    Xrm.App.sidePanes.getSelectedPane().badge = 1;

Xrm.App.panels.loadPanel で使用する

Microsoftは Xrm.Panels.loadPanel API を Xrm.App.sidePanes.createPane に置き換えます。前者は 1 つのペインのみをサポートし、後者は複数のペインをサポートしているためです。 loadPanel から createPane への移行を可能にするため、2 つの API は、いくつかの制限付きで連携して動作することができます。 モデル駆動型アプリ内で loadPanel のみを使用する場合、エクスペリエンスは変わりません。 ただし、loadPanel と createPane の両方を使用する場合、1つ目の制限事項は、loadPanel にプレースホルダー アイコンが表示されることです。 2 つ目の制限は、ユーザーが loadPanel から createPane に切り替えた際、アプリがメモリを節約するために loadPanel のコンテンツをアンロードし、元に戻った際に状態を保持せずに再読み込みしてしまうという点です。 このタブ 切り替え動作は、アプリで使用されるメモリを管理するためにマルチセッション アプリ モード内で使用されるのと同じ動作です。 ほとんどのページの種類は正しく復元されます。 ただし、外部サイトまたは Web リソースを開くと、状態は復元されません。

createPaneを使用するように切り替えることで、アイコンを指定でき、alwaysRenderを有効にできるため、これら 2 つの制限を回避できます。 alwaysRenderは、ユーザーが切り替えたときにウィンドウの内容を保持しますが、より多くのメモリを使用するため、控えめに使用してください。

sidePanes (クライアント API 参照)
loadPanel (Client API 参照)
チュートリアル: 最初のクライアント スクリプトを記述する