メインコンテキスト

MainContextコンポーネントは、1つ以上のRecordContextsSubGrids、またはManyToManyLookupEditorsをカプセル化し、それらすべてにわたる保存、更新、検証、ダーティステートの追跡を座標化するために使われます。

子コンポーネント

MainContextは以下の子コンポーネントのいずれかの組み合わせを含みます。

  • RecordContext — 編集のために単一のDataverseレコードをラップします。
  • SubGrid — 関連記録のコレクションを表示・管理します。
  • ManyToManyLookupEditor — 多対多の関係を管理。
React
Blazor

貯蓄

MenuBar内に変更を永続化できるSaveContextButtonを含めること。保存ボタンをクリックすると、すべての子コンポーネントにわたるすべてのダーティレコードがDataverseへの単一のトランザクションリクエストにまとめて保存されます。もしレコードが保存に失敗した場合、トランザクション全体がロールバックされ、変更は永続化されません。

React
Blazor

さっぱりした

保存されていない変更を破棄し、Dataverseからレコードを再ロードできる RefreshContextButton を含めること。保存されていない変更がある場合は、リフレッシュが行われる前に確認ダイアログが表示されます。

検証

デフォルトでは、 MainContext は保存前にすべての子コンポーネントを検証します。 ForceSuccessfulValidationBeforeSavefalse に設定してこの動作を無効にしてください。

React
Blazor

ダーティステートトラッキング

MainContextは、IsDirtyプロパティを通じて、子コンポーネントに保存されていない変更があるかどうかを自動的に追跡します。保存されていない変更がある状態でユーザーがページから離れようとすると、確認ダイアログが表示されます。DisableUnsavedChangesWarningtrueに設定して、ナビゲーション変更時にこのダイアログを抑制してください。この設定に関係なく、リフレッシュ時に常に警告が表示されます。

React
Blazor

インターセプティングセーブ

OnBeforeSaveコールバックを使って、セーブ操作前にカスタムロジックを実行してください。セーブを進めないようにCancelEventArgs.Canceltrueに設定してください。

React
Blazor

以下の例は、2つのRecordContexts、保存・リフレッシュボタンを備えたMenuBar、そしてカスタムOnBeforeSaveハンドラーを持つMainContextを示しています。

Reactの例
ブレイザーの例
セーブ リフレッシュ
接触記録
会計記録
React TypeScript
Razor
反応してください ブレイザー

MainContext クラス

パラメータ

名称
種類
デフォルト
概要
ChildContentRenderFragment?
この文脈でレンダリングされる子コンポーネント。
DisableUnsavedChangesWarningbool?
trueに設定すると、ページから離れる際に未保存の変更警告ダイアログが表示されません。 この設定に関係なく、リフレッシュ時に常に警告が表示されます。 明示的に設定されていない場合、その値は親コンテキストから継承されます。
ForceSuccessfulValidationBeforeSavebool
True
記録の検証が成功してから保存を許可した場合、
IsDirtybool
False
このコンテキストや登録済みの子に保存されていない変更があるかどうかを示します。
ParentContextMainContext?
最も近い祖先であるMainContextにより、ネストされたコンテキスト階層が可能になりました。
名称: ChildContent
種類: RenderFragment?
概要: この文脈でレンダリングされる子コンポーネント。
名称: DisableUnsavedChangesWarning
種類: bool?
概要: trueに設定すると、ページから離れる際に未保存の変更警告ダイアログが表示されません。 この設定に関係なく、リフレッシュ時に常に警告が表示されます。 明示的に設定されていない場合、その値は親コンテキストから継承されます。
名称: ForceSuccessfulValidationBeforeSave
種類: bool
デフォルト: True
概要: 記録の検証が成功してから保存を許可した場合、
名称: IsDirty
種類: bool
デフォルト: False
概要: このコンテキストや登録済みの子に保存されていない変更があるかどうかを示します。
名称: ParentContext
種類: MainContext?
概要: 最も近い祖先であるMainContextにより、ネストされたコンテキスト階層が可能になりました。

イベント

名称
種類
概要
OnBeforeSaveEventCallback<CancelEventArgs>
コールバックから電話がかかってきて、セーブ前に電話がかかってきた。セーブ操作をキャンセルすることが可能です。
名称: OnBeforeSave
種類: EventCallback<CancelEventArgs>
概要: コールバックから電話がかかってきて、セーブ前に電話がかかってきた。セーブ操作をキャンセルすることが可能です。

方法

名称
パラメータ
種類
概要
GetRequestsList<OrganizationRequest>
このコンテキストおよびその子コンテキストからの保留中のセーブリクエストをすべて収集し、返します。
RefreshAsyncbool forceRefresh
Task
このコンテキストと登録済みのすべての子コンポーネントを更新します。
ResetStatevoid
このコンテキストおよび登録されたすべての子の変更をリセットします。
SaveAsyncbool? refresh
Task<bool>
コンテキストと子コンテキスト(グリッド、レコードなど)を保存してください。
Validatebool
このコンテキストと登録済みのすべての子コンポーネントを検証します。
名称: GetRequests
種類: List<OrganizationRequest>
概要: このコンテキストおよびその子コンテキストからの保留中のセーブリクエストをすべて収集し、返します。
名称: RefreshAsync
パラメータ: bool forceRefresh
種類: Task
概要: このコンテキストと登録済みのすべての子コンポーネントを更新します。
名称: ResetState
種類: void
概要: このコンテキストおよび登録されたすべての子の変更をリセットします。
名称: SaveAsync
パラメータ: bool? refresh
種類: Task<bool>
概要: コンテキストと子コンテキスト(グリッド、レコードなど)を保存してください。
名称: Validate
種類: bool
概要: このコンテキストと登録済みのすべての子コンポーネントを検証します。