M365関連 プログラム 技術

PowerAppsのモデル駆動型でonchangeイベントを呼び出す

以前、PowerAppsのモデル駆動型でonloadイベントをJavaScriptで実装する方法を紹介しましたが、今回は列の値が更新された際のonchangeイベントについてになります

以前の記事
PowerAppsのモデル駆動型でonloadイベントを呼び出す - ナストンのまとめ
PowerAppsのモデル駆動型でonloadイベントを呼び出す - ナストンのまとめ

モデル駆動型のアプリで特定のフォームを開いた際にレコード内容を書き換えるようにOnloadイベントを設定したいと思います ...

対象記事へ

アプリにOnchangeを設定前の準備

Onchangeイベントを呼び出す際に実行する内容を記載したスクリプトをあらかじめアップロードしておく必要があります。今回は対象レコードの対象列を更新する内容で作成します

アップロードするスクリプトの内容

var Sdk = window.Sdk || {};
(function () {

    // logicalName : 論理名
    // displayNmae : 表示名
    this.formOnChanged = function (executionContext, logicalName, displayNmae) {
        console.log("formOnChanged has been called");
        var formContext = executionContext.getFormContext();
        var today = formContext.getAttribute(logicalName).getValue();
        if(today != null){
            var date = new Date(today);
            var year = date.getFullYear();
            var month = date.getMonth() + 1;
            var day = date.getDate();
            var dateStr = displayNmae + 'に設定された日付は' + year + '年' + month + '月' + day + '日 です';
            var alertStrings = { confirmButtonLabel: "閉じる", text: dateStr, title: `${displayNmae}の値について` };
            var alertOptions = { height: 200, width: 260 };
            Xrm.Navigation.openAlertDialog(alertStrings, alertOptions).then(
                function (success) {
                    console.log("Alert dialog closed");
                },
                function (error) {
                    console.log(error.message);
                }
            );
        }
    }
}).call(Sdk);

実際にOnchangeイベントで必要となるのが、以下の部分で今回は対象を書き換えるということなので、実行時にコンテキストというものを受け取るようにしています

var Sdk = window.Sdk || {};
(function () {
    this.formOnChanged= function (executionContext) {
    }
}).call(Sdk);

実際にOnchangeイベントを設定する

前回同様に対象となるテーブルのフォーム編集画面で画面右にあるJSと記載されている個所をクリックするとフォームライブラリと表示されますので、「ライブラリの追加」をクリックして対象のスクリプトを追加します

次に変更イベントを登録したい項目をクリックし、「更新イベントを設定したい項目をクリック」>「イベント」>「イベントハンドラー」をクリックします

下画像のように関数に「Sdk.formOnChanged」を設定し、「実行コンテキストを最初のパラメーターとして渡す」にチェックをいれます
そして今回は対象列の論理名と表示名を引数として渡しています

上記設定が完了したらアプリを保存して公開します
実際に変更イベントを登録した項目を変更してみます。今回は確認用としてアラートダイアログを表示しています

会社紹介

私が所属しているアドバンスド・ソリューション株式会社(以下、ADS)は一緒に働く仲間を募集しています

会社概要
「技術」×「知恵」=顧客課題の解決・新しい価値の創造

この方程式の実現はADSが大切にしている考えで、技術を磨き続けるgeekさと、顧客を思うloveがあってこそ実現できる世界観だと思っています
この『love & geek』の精神さえあれば、得意不得意はno problem!
技術はピカイチだけど顧客折衝はちょっと苦手。OKです。技術はまだ未熟だけど顧客と知恵を出し合って要件定義するのは大好き。OKです
凸凹な社員の集まり、色んなカラーや柄の個性が集まっているからこそ、常に新しいソリューションが生まれています

ミッション
私たちは、テクノロジーを活用し、業務や事業の生産性向上と企業進化を支援します

ホームページ
アドバンスド・ソリューション株式会社(ADS)
アドバンスド・ソリューション株式会社(ADS)

Microsoft 365/SharePoint/Power Platform/Azure による DX コンサル・シス ...

サイトへ移動

PR

-M365関連, プログラム, 技術
-,