Power Apps での Edit form および Display form のコントロール

データ ソースのレコードを表示、編集、および作成します。

内容

Display form コントロールを追加する場合、ユーザーはレコードのすべてのフィールド、または指定されたフィールドのみを表示できます。 Edit form コントロールを追加する場合、ユーザーはそれらのフィールドを編集したり、レコードを作成したり、変更をデータ ソースに保存したりできます。

フォーム コントロールとフォーム ビュー コントロールの例。

Gallery コントロールを追加する場合、データ ソース内にテーブルを表示するようにコントロールを構成した後、ユーザーがギャラリーで選択するレコードを表示するようにフォームを構成できます。 ユーザーが編集内容を保存したり、編集をキャンセルしたり、レコードを作成するために選択できる Button コントロールを 1 つ以上追加することもできます。 コントロールを組み合わせて使用することにより、完全なソリューションを作成 できます。

レコードの選択

どちらのタイプのフォームでも、その DataSource プロパティをレコードのテーブルに設定し、そのテーブル内の特定のレコードを表示するようにフォームの Item プロパティを設定します。 たとえば、フォームの Item プロパティを、Gallery コントロールの SelectedItem プロパティに設定できます。 ユーザーがギャラリーでレコードを選択すると、フォームに同じレコードが表示されます。ただし、フォームに表示するフィールドは増やすことができます。 ユーザーがギャラリーに戻って別のレコードを選択すると、ギャラリーの SelectedItem プロパティが変化します。 この変更により、フォームの Item プロパティが更新され、新しく選択されたレコードが表示されます。

レコードの表示、編集、または追加 に関する説明に従って Drop down コントロールを使用して、または LookupFirst などの関数を使用して、フォームの Item プロパティを設定することもできます。 たとえば、次のいずれかの数式に Item プロパティを設定して、Microsoft Dataverse で 取引先企業 テーブル内に Fabrikam エントリを表示することができます。

First(Accounts)

Lookup(Accounts, "Fabrikam" in name)

各フォーム コントロールには 1 つ以上の Card コントロールが含まれます。 カードの DataField プロパティを設定することにより、カードに表示されるフィールドとその他の詳細を指定 します。

レコードを作成する

Edit form コントロールが 編集 モードのとき、ユーザーは、フォームの Item プロパティで指定されたレコードを更新できます。 検査した場合、Mode プロパティは 編集 を返します。

ただし、Edit form コントロールが 新規 モードのとき、Item プロパティは無視されます。 フォームは既存のレコードを表示しません。代わりに各フィールドの値は、フォームを構成したデータ ソースの既定値と一致します。 NewForm 関数を使用することで、フォームはこのモードに切り替わります。

たとえば、新規 を表示するようにボタンの Text プロパティを設定し、その OnSelect プロパティを NewForm 関数を含む数式に設定できます。 ユーザーがそのボタンを選択すると、フォームは 新規 モードに切り替わり、ユーザーは既知の値で始まるレコードを作成できます。

ResetForm 関数が実行されるか、SubmitForm 関数が正常に実行される場合、フォームは 編集 モードに戻ります。

  • キャンセル を表示するようにボタンの Text プロパティを設定し、その OnSelect プロパティを ResetForm 関数を含む数式に設定できます。 ユーザーがそのボタンを選択すると、進行中の変更は破棄され、フォーム内の値は再びデータ ソースの既定値と一致します。
  • 変更の保存 を表示するようにボタンの Text プロパティを設定し、その OnSelect プロパティを SubmitForm 関数を含む数式に設定できます。 ユーザーがそのボタンを選択し、データ ソースが更新されている場合、フォーム内の値はデータ ソースの既定値にリセットされます。

変更の保存

前のセクションで説明したように 変更の保存 ボタンを作成する場合、ユーザーはレコードを作成または更新した後、そのボタンを選択して変更内容をデータ ソースに保存できます。 代わりに、同じタスクを実行するように Image コントロールまたはその他のコントロールを構成できます (SubmitForm 関数でそのコントロールを構成する場合)。 いずれの場合も、ErrorErrorKindOnSuccess、および OnFailure の各プロパティが結果についてのフィードバックを提供します。

SubmitForm 関数が実行されると、まずユーザーが送信しようとしているデータが検証されます。 必須のフィールドに値が含まれていないか、または別の値がその他の制約に準拠していない場合、ErrorKind プロパティが設定され、OnFailure 式が実行されます。 データが有効である (つまり、フォームの Valid プロパティが true である) 場合にのみユーザーが選択できるよう、変更の保存 ボタンまたはその他のコントロールを構成できます。 Error および ErrorKind プロパティをリセットするには、ユーザーは問題を修正するだけでなく、変更の保存 ボタンをもう一度選択する (または先に説明したように、キャンセル ボタンを選択して変更内容を破棄する) 必要もあることに注意してください。

データが検証に合格した場合、SubmitForm はデータをデータ ソースに送信しますが、ネットワークの遅延によっては少し時間がかかることがあります。

  • 送信が成功した場合、Error プロパティはクリアされ、ErrorKind プロパティは ErrorKind.None に設定され、OnSuccess 式が実行されます。 ユーザーがレコードを作成した (つまり、フォームが以前は 新規 モードだった) 場合、新しく作成されたレコードまたは別のレコードをユーザーが編集できるよう、フォームは 編集 モードに切り替わります。
  • 送信が失敗した場合、Error プロパティにはデータ ソースからの、問題を説明するユーザー フレンドリなエラー メッセージが含まれます。 問題に応じて ErrorKind プロパティが適切に設定され、OnFailure 式が実行されます。

一部のデータ ソースは、2 人のユーザーが同じレコードを同時に更新しようとするときにそのことを検出できます。この場合、ErrorKindErrorKind.Conflict に設定されており、対応策としては、もう一方のユーザーの変更でデータ ソースを更新し、このユーザーによって加えられた変更を再適用できます。

ヒント

進行中の変更をユーザーが破棄できるようにフォーム上に キャンセル ボタンを表示する場合、このボタンの OnSelect プロパティに ResetForm 関数を追加します (このプロパティに、画面を変更するための Navigate 関数も含まれている場合でも)。 さもなければ、フォームはそのユーザーによる変更を保持します。

レイアウト​​

既定では、カードは電話アプリでは単一列に配置され、タブレット アプリでは 3 列に配置されます。 フォームを構成するときに、フォームの列数と、カードを列にスナップするかどうかを指定できます。 これらの設定は、カードの XY、および Width プロパティを設定するときにのみ使用されるため、プロパティとして公開されません。

詳細については、データ フォームのレイアウトについて を参照してください。

主要なプロパティ

DataSource – ユーザーが表示、編集、または作成するレコードが含まれるデータ ソース。

  • このプロパティを設定しない場合、ユーザーはレコードを表示、編集、または作成できず、追加のメタデータや検証は提供されません。

DefaultMode - フォーム コントロールの初期モード。 下記の Mode の説明で、使用可能な値とその意味を確認してください。

DisplayMode - フォーム コントロール内のデータ カードとコントロールに使用するモード。

Mode プロパティ ベースから派生しているため、個別には設定できません:

MODE DisplayMode 内容
FormMode.Edit DisplayMode.Edit データ カードとコントロールは編集可能で、レコードへの変更を受け入れる準備ができています。
FormMode.New DisplayMode.Edit データ カードとコントロールは編集可能で、新しいレコードを受け入れる準備ができています。
FormMode.View DisplayMode.View データ カードとコントロールは編集できず、表示に最適化されています。

ErrorSubmitForm 関数が失敗したときにこのフォームに表示するユーザー フレンドリなエラー メッセージ。

  • このプロパティは Edit form コントロールのみに適用されます。
  • このプロパティは、SubmitFormEditForm、または ResetForm 関数の実行時にのみ変化します。
  • エラーが発生しない場合、このプロパティは であり、ErrorKindErrorKind.None に設定されます。
  • 可能な場合は、ユーザーの言語でエラー メッセージが返されます。 一部のエラー メッセージはデータ ソースから直接来ており、ユーザーの言語ではない場合があります。

ErrorKindSubmitForm の実行時にエラーが発生した場合の、発生したエラーの種類。

  • Edit form コントロールのみに適用されます。
  • このプロパティには、Errors 関数と同じ列挙があります。 Edit form コントロールは次の値を返すことができます:
ErrorKind 内容
ErrorKind.Conflict 別のユーザーが同じレコードを変更した結果、変更が競合しています。 Refresh 関数を実行してレコードを再読み込みし、変更をもう一度やり直してください。
ErrorKind.None 不明な種類のエラーです。
ErrorKind.Sync データ ソースがエラーを報告しました。 詳細については、Error プロパティを確認してください。
ErrorKind.Validation 一般的な検証の問題が検出されました。

Item – ユーザーが表示または編集する DataSource 内のレコード。

LastSubmit – 任意のサーバーが生成したフィールドを含む、最後に正常に送信されたレコード。

  • このプロパティは Edit form コントロールのみに適用されます。
  • 一意の番号を持つ ID フィールドなどの、データ ソースが任意のフィールドを自動的に生成または計算する場合、SubmitForm が正常に実行された後、LastSubmit プロパティにはこの新しい値があるようになります。
  • このプロパティの値は OnSuccess 式で利用できます。

Mode – コントロールは 編集 または 新規 モードです。

MODE 内容
FormMode.Edit ユーザーはフォームを使用してレコードを編集できます。 フォームのカードの値は、ユーザーが変更する既存のレコードが事前入力されています。 SubmitForm 関数が正常に実行された場合、既存のレコードが変更されます。
FormMode.New ユーザーはフォームを使用してレコードを作成できます。 フォームのコントロールの値は、データ ソースのレコードの既定値が事前入力されています。 SubmitForm 関数が正常に実行された場合、レコードが作成されます。
FormMode.View ユーザーはフォームを使用してレコードを表示できます。 フォームのコントロールの値は、データ ソースのレコードの既定値が事前入力されています。

次の変更のいずれかが発生すると、フォームは 新規 モードから 編集 モードに切り替わります:

  • フォームが正常に送信され、レコードが作成されます。 この新しいレコードに自動で選択を移動するようギャラリーが設定されている場合、ユーザーが追加の変更を加えることができるよう、フォームは作成されたレコードに対して 編集 モードになります。
  • EditForm 関数が実行されます。
  • ResetForm 関数が実行されます。 たとえば、ユーザーが、この関数が構成された キャンセル ボタンを選択する場合があります。

OnFailure – データ操作が失敗したときに実行するアクション。

  • このプロパティは Edit form コントロールのみに適用されます。

OnResetEdit form コントロールをリセットされたときに実行するアクション。

  • このプロパティは Edit form コントロールのみに適用されます。

OnSuccess – データ操作が成功したときに実行するアクション。

  • このプロパティは Edit form コントロールのみに適用されます。

Unsaved – ユーザーによる未保存の変更が Edit form コントロールに含まれている場合は true。

  • このプロパティは Edit form コントロールのみに適用されます。
  • このプロパティを使用して、未保存の変更が失われる前にユーザーに警告します。 現在のレコードの変更を保存する前にユーザーが Gallery コントロールで別のレコードを選択することを防ぐには、ギャラリーの Disabled プロパティを Form.Unsaved に設定し、同様に、更新操作を無効にします。

Updates – フォーム コントロールに読み込まれているレコードに対してデータ ソースに書き戻す値。

  • このプロパティは Edit form コントロールのみに適用されます。
  • このプロパティを使用して、コントロール内のカードからフィールド値を抽出します。 その後、これらの値を使用して、Patch 関数の呼び出し、または接続によって公開されている別のメソッドによってデータ ソースを手動で更新できます。 SubmitForm 関数を使用している場合、このプロパティを使用する必要はありません。
  • このプロパティは、値のレコードを返します。 たとえば、名前 および 数量 フィールドのカード コントロールがフォーム コントロールに含まれており、それらのカードの Update プロパティの値がそれぞれ "ウィジェット" および 10 を返す場合、フォーム コントロールの Updates プロパティは { 名前: "ウィジェット"、数量: 10 } を返します。

ValidCard または Edit form コントロールに、データ ソースに送信する準備ができた有効なエントリが含まれているかどうか。

  • このプロパティは Edit form コントロールのみに適用されます。

  • Form コントロールの Valid プロパティは、フォーム内のすべての Card コントロールの Valid プロパティを集約します。 フォームの Valid プロパティは、そのフォーム内のすべてのカードのデータが有効である場合にのみ true です。それ以外の場合は、フォームの 有効 プロパティは false です。

  • フォーム内のデータが有効でもまだ送信されていない場合にのみ、変更を保存するボタンを有効にするには、ボタンの DisplayMode プロパティを次の式に設定します:

    SubmitButton.DisplayMode = If(IsBlank( Form.Error ) || Form.Valid, DisplayMode.Edit, DisplayMode.Disabled)

追加のプロパティ

BorderColor – コントロールの境界線の色。

BorderStyle – コントロールの境界線が 実線破線点線、または なし かどうか。

BorderThickness – コントロールの境界線の太さ。

Fill – コントロールの背景色。

Height – コントロールの上端と下端間の距離。

Visible – コントロールが表示されるか非表示になるか。

Width – コントロールの左端と右端間の距離。

X – コントロールの左端とその親コンテナー (親コンテナーがない場合は画面) の左端間の距離。

Y – コントロールの上端とその親コンテナー (親コンテナーがない場合は画面) の上端間の距離。

詳細

フォームの動作の全般的な概要については、「データ フォームについて」を参照してください。

アクセシビリティ ガイドライン

スクリーン リーダー サポート

  • Label を使用して見出しをフォームに追加することを検討してください。

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。