クライアント API を使用したサイド ペインの作成

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

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

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

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

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

注意

この API は、Dynamics 365 Customer Engagement の設置型展開に利用できません。 詳細: クライアント API は Customer Engagement (on-premises) でサポートされていません

使用例

サイド ペインに既定ビューを表示する

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

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

名前、備品、予約の開始日など、アクティブな予約のリストを含む予約テーブルを表示しているスクリーンショット。

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

予約可能な製品のリストを含む製品テーブルを表示しているスクリーンショット。

テーブル行の表示

これは、サイド ペインに行を表示する方法の例です。 予約行がサイド ペインで開かれ、既定のヘッダーが非表示になり、幅が 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: "d4034340-4623-e811-a847-000d3a30c619",
    })
});

個々のレコードに対して開かれたアクティブな予約リストを表示しているスクリーンショット。

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 で使用する

Xrm.Panels.loadPanel API は Xrm.App.sidePanes.createPane に置き換えられます。前者は単一のペインのみをサポートし、後者は複数のペインをサポートするためです。 loadPanel から createPane への以降を有効にするには、両方を一緒に動作します (制限あり)。 モデル駆動型アプリ内で loadPanel のみを使用する場合、エクスペリエンスは同じままです。 ただし、loadPanelcreatePane の両方を使用する場合、最初の制限として、プレースホルダー アイコンが loadPanel に表示されます。 2 つ目の制限として、ユーザーが loadPanel から createPane に切り替えるとき、loadPanel のコンテンツはメモリを節約するためにアンロードされ、戻るときに状態なしでリロードされます。 このタブの切り替え動作は、アプリが使用するメモリを管理するためにマルチセッション アプリ モードで使用されるものと同じです。 ほとんどの種類のページは正しく復元されますが、外部サイトまたは Web リソースが開いている場合、状態は復元されません。

createPane に切り替えて使用すると、アイコンを提供し、alwaysRender を有効にすることで両方の制限を回避できます。 ユーザーが切り替えるとき、alwaysRender はペインのコンテンツを保持しますが、メモリの使用量が増えるため、慎重に使用する必要があります。

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