Power Apps での表示フォームおよび編集フォームのコントロール

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

内容

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

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

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

レコードの選択

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

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

First(Accounts)

Lookup(Accounts, "Fabrikam" in name)

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

レコードを作成する

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

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

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

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

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

変更の保存

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

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

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

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

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

ヒント

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

レイアウト​​

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

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

主要なプロパティ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

OnFailure – データ操作が失敗したときのアプリの応答方法。

  • このプロパティは 編集フォーム コントロールのみに適用されます。

OnReset編集フォーム コントロールがリセットされたときのアプリの応答方法。

  • このプロパティは 編集フォーム コントロールのみに適用されます。

OnSuccess – データ操作が成功したときのアプリの応答方法。

  • このプロパティは 編集フォーム コントロールのみに適用されます。

未保存 – ユーザーによる未保存の変更が編集フォーム コントロールに含まれている場合は true。

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

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

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

有効カード または編集フォーム コントロールに、データ ソースに送信する準備ができた有効なエントリが含まれているかどうか。

  • このプロパティは 編集フォーム コントロールのみに適用されます。

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

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

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

追加のプロパティ

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

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

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

塗りつぶし – コントロールの背景色。

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

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

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

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

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

詳細

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

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

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

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