演習 - クライアント スクリプトを使用してフォーム セクションを非表示にする
この演習では、クライアント スクリプトを使用して、プロジェクトの開始日が指定されていない場合または未来である場合に [状態] セクションを非表示にするというビジネス要件を実装します。
重要
Microsoft Dataverse がプロビジョニングされていて、サンプル アプリが有効になっているテスト環境を使用してください。 テスト環境がない場合は、コミュニティ プランに新規登録できます。
タスク 1: ソリューションとフォームを作成する
このタスクでは、ソリューションを作成し、ソリューションに既存のテーブルを追加して、ソリューションに追加したテーブルのメイン フォームを作成します。
Power Apps Maker Portal に移動して、サンプル アプリが有効になっている正しい環境にいることを確認します。
ソリューション、+ 新しいソリューションの順に選択します。
表示名に イノベーション チャレンジの拡張と入力し、公開元に CDS default publisher を選択して、作成を選択します。
作成したイノベーション チャレンジの拡張が開きます。
+ 既存の追加、テーブルの順に選択します。
検索テキストボックスに「チーム」と入力し、チーム プロジェクトを選択して、次へをクリックします。
メモ
チーム プロジェクト テーブルが見つからない場合は、環境にサンプル アプリがない可能性があります。 サンプル アプリがインストールされている別の環境を選択するか、新しい環境を作成してください。
オブジェクトの選択ボタンを選択します。
フォーム タブを選択し、フォーム タイプがメインである情報フォームを選択して、追加を選択します。
追加をもう一度選択します。
ソリューションに追加したチーム プロジェクト テーブルを開きます。
データ エクスペリエンス カードで、フォームを選択します。
フォームの種類がメインである情報フォームを開きます。
状態セクションを選択します。
プロパティ ペインで、名前を section_status に変更して、非表示チェックボックスをオンにします。 既定では、セクション名には GUID が割り当てられます。 これを、スクリプトで参照するためにわかりやすい名前に変更します。 また、既定でこのセクションを非表示にして、フォームの読み込み時に表示と非表示を切り替える手間を減らします。
ツリー ビューに移動して、全般タブを選択します。
[プロパティ] ペインで、名前を tab_general に変更します。
プロジェクトの開始列を選択します。
プロパティ ペインに移動して、テーブル列の名前の横にある (i) を選択します。
論理名 (sample_projectstart) をコピーして、メモ帳に貼り付けます。 この名前は、データ列を参照するためにスクリプトで使用します。
保存して公開を選択して、変更内容を保存します。 公開が完了するまで待ちます。
戻るボタンを選択します。
すべてを選択します。
すべてのカスタマイズの公開を選択し、公開が完了するまで待ちます。
タスク 2: クライアント スクリプトを作成する
このタスクでは、プロジェクトの開始日に基づいて [状態] セクションの表示/非表示を切り替えるスクリプトを作成します。
[状態] セクションを非表示にします。 プロジェクトの開始日が空白または未来の日付ではない場合は、[状態] セクションを表示します。
Visual Studio Code の新しいインスタンスを起動するか、任意のコード エディターを使用します。 Visual Studio Code は、このリンクからダウンロードしてインストールできます。
フォルダーを開くを選択します。
ドキュメント フォルダーにフォルダーを作成して、ClientScriptLab という名前を付けます。
作成した ClientScriptLab フォルダーを選択して、フォルダーの選択を選択します。
CLIENTSCRIPTLAB フォルダーにカーソルを合わせて、新しいファイルを選択します。
ファイルに FormTeamProject.js という名前を付けます。
FormTeamProject.js に以下の関数を追加します。 関数は、一意の名前を持つか、名前空間を使用して一意にする必要があります。
function LearnLab_handleTeamProjectOnLoad(executionContext) { } function LearnLab_handleProjectStatusOnChange(executionContext) { } function LearnLab_hideOrShowStatusSection(formContext) { }
OnLoad 関数にこのスクリプトを追加します。 [プロジェクトの開始] 列の名前が sample_projectstart であることに注意してください。 これは、前に保存した論理名です。 このコードは、onChange のイベント ハンドラーを登録し、セクションを表示/非表示にする一般的な関数を呼び出します。 プロジェクトの開始日の入力によって表示/非表示の要件が変わった場合の変更を処理する必要があります。
var formContext = executionContext.getFormContext(); formContext.getAttribute('sample_projectstart').addOnChange(LearnLab_handleProjectStatusOnChange); LearnLab_hideOrShowStatusSection(formContext);
OnChange 関数にこのスクリプトを追加します。 このコードは、formContext を取得して、表示/非表示にする一般的な関数を呼び出します。
var formContext = executionContext.getFormContext(); LearnLab_hideOrShowStatusSection(formContext);
hideOrShowStatusSection 関数にこのスクリプトを追加します。 タブ名が tab_general、セクション名が section_status、列名が sample_projectstart であることに注意してください。
var tabGeneral = formContext.ui.tabs.get('tab_general'); var sectionStatus = tabGeneral.sections.get('section_status'); var startDate = formContext.getAttribute('sample_projectstart').getValue(); var CurrentDate = new Date(); if (startDate == null || startDate > CurrentDate) { sectionStatus.setVisible(false); } else { sectionStatus.setVisible(true); }
スクリプトは次の図のようになります。
ファイル、保存を選択します。
タスク 3: スクリプトをアップロードする
このタスクでは、作成したスクリプトを環境に読み込みます。
Power Apps Maker portal に移動して、正しい環境にいることを確認します。
ソリューションを選択し、イノベーション チャレンジの拡張ソリューションを開きます。
+ 新規を選択し、詳細 | Web リソースを選択します。
名前に FormTeamProject.js、表示名に FormTeamProject.js と入力し、タイプに Java スクリプト (JS) を選択して、ファイルの選択を選択します。
さきほど作成した FormTeamProject.js ファイルを選択し、開くを選択します。
保存を選択します。
これで、ソリューションにチーム プロジェクト テーブルと FormTeamsProject.js Web リソースが追加されました。
このページから移動しないでください。
タスク 4: フォームを編集する
このタスクでは、チーム プロジェクト メイン フォームに JavaScript ライブラリを追加し、On Load イベントのイベント ハンドラーを追加します。
イノベーション チャレンジの拡張ソリューションにいることを確認します。
テーブルを展開し、チーム プロジェクト テーブルを展開します。
フォームを選択し、情報フォームを開きます。
プロパティ ペインに移動し、イベント タブを選択して、+ ライブラリの追加を選択します。
検索ボックスに team と入力し、Enter キーを押します。 FormTeamProject.js を選択し、追加を選択します。
On Load セクションを展開して、+ イベント ハンドラーを選択します。
関数に LearnLab_handleTeamProjectOnLoad と入力し、実行コンテキストを最初のパラメーターとして渡すチェックボックスをオンにして、完了を選択します。
保存して公開を選択し、変更が保存されるのを待ちます。
戻るボタンを選択します。
すべてを選択します。
すべてのカスタマイズの公開を選択し、公開が完了するまで待ちます。
タスク 5: テストする
このタスクでは、スクリプトをテストします。
Power Apps Maker portal に移動して、正しい環境にいることを確認します。
アプリを選択し、イノベーション チャレンジ アプリケーションを開きます。
チーム プロジェクトを選択し、クラウド コンピューティング チーム プロジェクトを開きます。
プロジェクトの開始列が空白であるため、状態セクションは表示されません。
プロジェクトの開始の横のカレンダー アイコンをクリックして、今日の日付を選択します。
状態セクションが表示されます。
プロジェクトの開始を未来の日付に変更します。
状態セクションが非表示になります。
プロジェクトの開始を過去の日付に変更します。
状態セクションがまた表示されます。
これで、JavaScript とクライアント API を使用して、ビジネス ルールなどの宣言型の方法では実装できないビジネス要件を実装しました。