Power Apps での 編集フォーム および 表示フォーム のコントロール
データ ソースのレコードを表示、編集、および作成します。
表示フォーム コントロールを追加する場合、ユーザーはレコードのすべてのフィールド、または指定されたフィールドのみを表示できます。 編集フォーム コントロールを追加する場合、ユーザーはそれらのフィールドを編集したり、レコードを作成したり、変更をデータ ソースに保存したりできます。
ギャラリー コントロールを追加する場合、データ ソース内にテーブルを表示するようにコントロールを構成した後、ユーザーがギャラリーで選択するレコードを表示するようにフォームを構成できます。 ユーザーが編集内容を保存したり、編集をキャンセルしたり、レコードを作成するために選択できる ボタン コントロールを 1 つ以上追加することもできます。 コントロールを組み合わせて使用することにより、完全なソリューションを作成 できます。
フォーム コントロールには、次の制限があります:
- フォームをコピーしてデータ カードに貼り付けることはできません。 これは、アプリの安定性とパフォーマンスを危険にさらすようなコントロールの特定の組み合わせが作成されないようにするためです。
どちらのタイプのフォームでも、その DataSource プロパティをレコードのテーブルに設定し、そのテーブル内の特定のレコードを表示するようにフォームのItemプロパティを設定します。 たとえば、フォームのItemプロパティを、ギャラリー コントロールの SelectedItem プロパティに設定できます。 ユーザーがギャラリーでレコードを選択すると、フォームに同じレコードが表示されます。ただし、フォームに表示するフィールドは増やすことができます。 ユーザーがギャラリーに戻って別のレコードを選択すると、ギャラリーの SelectedItem プロパティが変化します。 この変更により、フォームのItemプロパティが更新され、新しく選択されたレコードが表示されます。
レコードの表示、編集、または追加 に関する説明に従ってドロップダウン コントロールを使用して、または Lookup や First などの関数を使用して、フォームのItemプロパティを設定することもできます。 たとえば、次のいずれかの数式に Item プロパティを設定して、Microsoft Dataverse で 取引先企業 テーブル内に Fabrikam エントリを表示することができます。
First(Accounts)
Lookup(Accounts, "Fabrikam" in name)
各フォーム コントロールには 1 つ以上の カード コントロールが含まれます。 カードの DataField プロパティを設定することにより、カードに表示されるフィールドとその他の詳細を指定 します。
編集フォーム コントロールが 編集モードのとき、ユーザーは、フォームのItemプロパティで指定されたレコードを更新できます。 検査した場合、Mode プロパティは編集を返します。
ただし、編集フォーム コントロールが 新規モードのとき、Itemプロパティは無視されます。 フォームは既存のレコードを表示しません。代わりに各フィールドの値は、フォームを構成したデータ ソースの既定値と一致します。 NewForm 関数を使用することで、フォームはこのモードに切り替わります。
たとえば、新規を表示するようにボタンの Text プロパティを設定し、その OnSelect プロパティを NewForm 関数を含む数式に設定できます。 ユーザーがそのボタンを選択すると、フォームは新規モードに切り替わり、ユーザーは既知の値で始まるレコードを作成できます。
ResetForm 関数が実行されるか、SubmitForm 関数が正常に実行される場合、フォームは編集モードに戻ります。
- キャンセルを表示するようにボタンの Text プロパティを設定し、その OnSelect プロパティを ResetForm 関数を含む数式に設定できます。 ユーザーがそのボタンを選択すると、進行中の変更は破棄され、フォーム内の値は再びデータ ソースの既定値と一致します。
- 変更の保存を表示するようにボタンの Text プロパティを設定し、その OnSelect プロパティを SubmitForm 関数を含む数式に設定できます。 ユーザーがそのボタンを選択し、データ ソースが更新されている場合、フォーム内の値はデータ ソースの既定値にリセットされます。
前のセクションで説明したように変更の保存ボタンを作成する場合、ユーザーはレコードを作成または更新した後、そのボタンを選択して変更内容をデータ ソースに保存できます。 代わりに、同じタスクを実行するように 画像 コントロールまたはその他のコントロールを構成できます (SubmitForm 関数でそのコントロールを構成する場合)。 いずれの場合も、Error、ErrorKind、OnSuccess、および OnFailure の各プロパティが結果についてのフィードバックを提供します。
SubmitForm 関数が実行されると、まずユーザーが送信しようとしているデータが検証されます。 必須のフィールドに値が含まれていないか、または別の値がその他の制約に準拠していない場合、ErrorKind プロパティが設定され、OnFailure 式が実行されます。 データが有効である (つまり、フォームのValidプロパティが true である) 場合にのみユーザーが選択できるよう、変更の保存ボタンまたはその他のコントロールを構成できます。 Errorおよび ErrorKind プロパティをリセットするには、ユーザーは問題を修正するだけでなく、変更の保存ボタンをもう一度選択する (または先に説明したように、キャンセル ボタンを選択して変更内容を破棄する) 必要もあることに注意してください。
データが検証に合格した場合、SubmitForm はデータをデータ ソースに送信しますが、ネットワークの遅延によっては少し時間がかかることがあります。
- 送信が成功した場合、Error プロパティはクリアされ、ErrorKind プロパティは ErrorKind.None に設定され、OnSuccess 式が実行されます。 ユーザーがレコードを作成した (つまり、フォームが以前は新規モードだった) 場合、新しく作成されたレコードまたは別のレコードをユーザーが編集できるよう、フォームは編集モードに切り替わります。
- 送信が失敗した場合、Error プロパティにはデータ ソースからの、問題を説明するユーザー フレンドリなエラー メッセージが含まれます。 問題に応じて ErrorKind プロパティが適切に設定され、OnFailure 式が実行されます。
一部のデータ ソースは、2 人のユーザーが同じレコードを同時に更新しようとするときにそのことを検出できます。この場合、ErrorKind は ErrorKind.Conflict に設定されており、対応策としては、もう一方のユーザーの変更でデータ ソースを更新し、このユーザーによって加えられた変更を再適用できます。
ヒント
進行中の変更をユーザーが破棄できるようにフォーム上にキャンセル ボタンを表示する場合、このボタンの OnSelect プロパティに ResetForm 関数を追加します (このプロパティに、画面を変更するための Navigate 関数も含まれている場合でも)。 さもなければ、フォームはそのユーザーによる変更を保持します。
既定では、カードは電話アプリでは単一列に配置され、タブレット アプリでは 3 列に配置されます。 フォームを構成するときに、フォームの列数と、カードを列にスナップするかどうかを指定できます。 これらの設定は、カードの X、Y、およびWidthプロパティを設定するときにのみ使用されるため、プロパティとして公開されません。
詳細については、データ フォームのレイアウトについて を参照してください。
DataSource – ユーザーが表示、編集、または作成するレコードが含まれるデータ ソース。
- このプロパティを設定しない場合、ユーザーはレコードを表示、編集、または作成できず、追加のメタデータや検証は提供されません。
DefaultMode - フォーム コントロールの初期モード。 下記のModeの説明で、使用可能な値とその意味を確認してください。
DisplayMode - フォーム コントロール内のデータ カードとコントロールに使用するモード。
Mode プロパティ ベースから派生しているため、個別には設定できません:
MODE | DisplayMode | 内容 |
---|---|---|
FormMode.Edit | DisplayMode.Edit | データ カードとコントロールは編集可能で、レコードへの変更を受け入れる準備ができています。 |
FormMode.New | DisplayMode.Edit | データ カードとコントロールは編集可能で、新しいレコードを受け入れる準備ができています。 |
FormMode.View | DisplayMode.View | データ カードとコントロールは編集できず、表示に最適化されています。 |
Error – SubmitForm 関数が失敗したときにこのフォームに表示するユーザー フレンドリなエラー メッセージ。
- このプロパティは 編集フォーム コントロールのみに適用されます。
- このプロパティは、SubmitForm、EditForm、または ResetForm 関数の実行時にのみ変化します。
- エラーが発生しない場合、このプロパティは空であり、ErrorKind は ErrorKind.None に設定されます。
- 可能な場合は、ユーザーの言語でエラー メッセージが返されます。 一部のエラー メッセージはデータ ソースから直接来ており、ユーザーの言語ではない場合があります。
ErrorKind – SubmitForm の実行時にエラーが発生した場合の、発生したエラーの種類。
- 編集フォーム コントロールのみに適用されます。
- このプロパティには、Errors 関数と同じ列挙があります。 編集フォーム コントロールは次の値を返すことができます:
ErrorKind | 内容 |
---|---|
ErrorKind.Conflict | 別のユーザーが同じレコードを変更した結果、変更が競合しています。 Refresh 関数を実行してレコードを再読み込みし、変更をもう一度やり直してください。 |
ErrorKind.None | 不明な種類のエラーです。 |
ErrorKind.Sync | データ ソースがエラーを報告しました。 詳細については、Error プロパティを確認してください。 |
ErrorKind.Validation | 一般的な検証の問題が検出されました。 |
Item – ユーザーが表示または編集する DataSource 内のレコード。
LastSubmit – 任意のサーバーが生成したフィールドを含む、最後に正常に送信されたレコード。
- このプロパティは 編集フォーム コントロールのみに適用されます。
- 一意の番号を持つ ID フィールドなどの、データ ソースが任意のフィールドを自動的に生成または計算する場合、SubmitForm が正常に実行された後、LastSubmit プロパティにはこの新しい値があるようになります。
- このプロパティの値は OnSuccess 式で利用できます。
Mode – コントロールは編集または新規モードです。
MODE | 内容 |
---|---|
FormMode.Edit | ユーザーはフォームを使用してレコードを編集できます。 フォームのカードの値は、ユーザーが変更する既存のレコードが事前入力されています。 SubmitForm 関数が正常に実行された場合、既存のレコードが変更されます。 |
FormMode.New | ユーザーはフォームを使用してレコードを作成できます。 フォームのコントロールの値は、データ ソースのレコードの既定値が事前入力されています。 SubmitForm 関数が正常に実行された場合、レコードが作成されます。 |
FormMode.View | ユーザーはフォームを使用してレコードを表示できます。 フォームのコントロールの値は、データ ソースのレコードの既定値が事前入力されています。 |
次の変更のいずれかが発生すると、フォームは新規モードから編集モードに切り替わります:
- フォームが正常に送信され、レコードが作成されます。 この新しいレコードに自動で選択を移動するようギャラリーが設定されている場合、ユーザーが追加の変更を加えることができるよう、フォームは作成されたレコードに対して編集モードになります。
- EditForm 関数が実行されます。
- ResetForm 関数が実行されます。 たとえば、ユーザーが、この関数が構成されたキャンセル ボタンを選択する場合があります。
OnFailure – データ操作が失敗したときに実行するアクション。
- このプロパティは 編集フォーム コントロールのみに適用されます。
OnReset – 編集フォーム コントロールをリセットされたときに実行するアクション。
- このプロパティは 編集フォーム コントロールのみに適用されます。
OnSuccess – データ操作が成功したときに実行するアクション。
- このプロパティは 編集フォーム コントロールのみに適用されます。
Unsaved – ユーザーによる未保存の変更が編集フォーム コントロールに含まれている場合は true。
- このプロパティは 編集フォーム コントロールのみに適用されます。
- このプロパティを使用して、未保存の変更が失われる前にユーザーに警告します。 現在のレコードの変更を保存する前にユーザーが ギャラリー コントロールで別のレコードを選択することを防ぐには、ギャラリーの Disabled プロパティを Form.Unsaved に設定し、同様に、更新操作を無効にします。
Updates – フォーム コントロールに読み込まれているレコードに対してデータ ソースに書き戻す値。
- このプロパティは 編集フォーム コントロールのみに適用されます。
- このプロパティを使用して、コントロール内のカードからフィールド値を抽出します。 その後、これらの値を使用して、Patch 関数の呼び出し、または接続によって公開されている別のメソッドによってデータ ソースを手動で更新できます。 SubmitForm 関数を使用している場合、このプロパティを使用する必要はありません。
- このプロパティは、値のレコードを返します。 たとえば、名前および数量フィールドのカード コントロールがフォーム コントロールに含まれており、それらのカードの Update プロパティの値がそれぞれ "ウィジェット" および 10 を返す場合、フォーム コントロールのUpdatesプロパティは { 名前: "ウィジェット"、数量: 10 } を返します。
Valid – カード または編集フォーム コントロールに、データ ソースに送信する準備ができた有効なエントリが含まれているかどうか。
このプロパティは 編集フォーム コントロールのみに適用されます。
フォーム コントロールのValidプロパティは、フォーム内のすべての カード コントロールの 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 – コントロールの上端とその親コンテナー (親コンテナーがない場合は画面) の上端間の距離。
- フォームの動作の全般的な概要については、「データ フォームについて」を参照してください。
- EditForm 向けの Power Fx 数式リファレンスを参照してください。
- ラベル を使用して見出しをフォームに追加することを検討してください。
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。