MainContext

Die Komponente MainContext wird verwendet, um einen oder mehrere RecordContexts, SubGrids, oder ManyToManyLookupEditors zu kapseln und koordiniert Speicher-, Aktualisierungs-, Validierungs- und Dirty-State-Tracking über alle hinweg.

Kindkomponenten

A MainContext kann jede beliebige Kombination der folgenden Kindkomponenten enthalten:

  • RecordContext — Wickelt einen einzelnen Dataverse-Datensatz zum Bearbeiten ein.
  • SubGrid — Stellt eine Sammlung verwandter Unterlagen aus und verwaltet sie.
  • ManyToManyLookupEditor — Verwaltet viele-zu-viele Beziehungen.
React
Blazor

Sparen

Fügen Sie ein SaveContextButton Inside A MenuBar ein, damit Benutzer Änderungen erhalten bleiben können. Wenn der Speicherknopf angeklickt wird, werden alle Dirty Records aller Kindkomponenten in einer einzigen transaktionalen Anfrage an Dataverse gespeichert. Wenn ein Datensatz nicht gespeichert werden kann, wird die gesamte Transaktion zurückgesetzt und keine Änderungen bleiben erhalten.

React
Blazor

Erfrischend

Fügen Sie eine RefreshContextButton ein, damit Benutzer nicht gespeicherte Änderungen verwerfen und die Datensätze aus Dataverse neu laden können. Wenn es nicht gespeicherte Änderungen gibt, wird der Benutzer mit einem Bestätigungsdialog aufgefordert, bevor die Aktualisierung durchgeführt wird.

Validierung

Standardmäßig validiert das Verfahren MainContext alle Kindkomponenten vor dem Speichern. Auf Deaktivieren dieses Verhaltens eingestellt ForceSuccessfulValidationBeforeSave false .

React
Blazor

Dirty State Tracking

Sie MainContext verfolgt automatisch, ob eine Kindkomponente über die IsDirty Eigenschaft nicht gespeicherte Änderungen hat. Wenn ein Benutzer versucht, von der Seite wegzunavigieren, während Änderungen nicht gespeichert sind, wird ein Bestätigungsdialog angezeigt. So eingestellt DisableUnsavedChangesWarning true , dass dieser Dialog für Navigationsänderungen unterdrückt wird. Die Warnung wird beim Aktualisieren immer angezeigt, unabhängig von dieser Einstellung.

React
Blazor

Abfangparade

Nutze den Callback, OnBeforeSave um benutzerdefinierte Logik vor dem Speichervorgang auszuführen. Auf Einstellung gesetzt CancelEventArgs.Cancel true , um zu verhindern, dass der Speicherstand fortgesetzt wird.

React
Blazor

Beispiel

Das folgende Beispiel zeigt ein MainContext mit zwei RecordContexts, einem MenuBar mit Speicher- und Aktualisierungstasten sowie einem benutzerdefinierten OnBeforeSave Handler.

React-Beispiel
Blazor-Beispiel
Speichern Aktualisieren
Kontaktprotokoll
Kontoeintrag
React TypeScript
Razor
Reagieren Blazor

MainContext Baureihe

Parameter

Name
Typ
Default
Beschreibung
ChildContentRenderFragment?
Die Kindkomponenten werden in diesem Kontext gerendert.
DisableUnsavedChangesWarningbool?
Wenn auf true gesetzt, wird der Dialog für nicht gespeicherte Änderungen nicht angezeigt, wenn man von der Seite wegnavigiert. Die Warnung wird beim Aktualisieren immer angezeigt, unabhängig von dieser Einstellung. Wenn nicht explizit gesetzt, wird der Wert vom Elternkontext übernommen.
ForceSuccessfulValidationBeforeSavebool
True
Sollte eine erfolgreiche Validierung des Datensatzes durchgeführt werden, bevor der Datensatz gespeichert werden kann.
IsDirtybool
False
Gibt an, ob dieser Kontext oder jedes registrierte Kind nicht gespeicherte Änderungen enthält.
ParentContextMainContext?
Der nächstgelegene Vorfahre MainContext, der verschachtelte Kontexthierarchien ermöglicht.
Name: ChildContent
Typ: RenderFragment?
Beschreibung: Die Kindkomponenten werden in diesem Kontext gerendert.
Name: DisableUnsavedChangesWarning
Typ: bool?
Beschreibung: Wenn auf true gesetzt, wird der Dialog für nicht gespeicherte Änderungen nicht angezeigt, wenn man von der Seite wegnavigiert. Die Warnung wird beim Aktualisieren immer angezeigt, unabhängig von dieser Einstellung. Wenn nicht explizit gesetzt, wird der Wert vom Elternkontext übernommen.
Name: ForceSuccessfulValidationBeforeSave
Typ: bool
Default: True
Beschreibung: Sollte eine erfolgreiche Validierung des Datensatzes durchgeführt werden, bevor der Datensatz gespeichert werden kann.
Name: IsDirty
Typ: bool
Default: False
Beschreibung: Gibt an, ob dieser Kontext oder jedes registrierte Kind nicht gespeicherte Änderungen enthält.
Name: ParentContext
Typ: MainContext?
Beschreibung: Der nächstgelegene Vorfahre MainContext, der verschachtelte Kontexthierarchien ermöglicht.

Veranstaltungen

Name
Typ
Beschreibung
OnBeforeSaveEventCallback<CancelEventArgs>
Callback hat vor dem Speichern angerufen. Ermöglicht das Abbrechen des Speichervorgangs.
Name: OnBeforeSave
Typ: EventCallback<CancelEventArgs>
Beschreibung: Callback hat vor dem Speichern angerufen. Ermöglicht das Abbrechen des Speichervorgangs.

Methoden

Name
Parameter
Typ
Beschreibung
GetRequestsList<OrganizationRequest>
Sammelt und gibt alle ausstehenden Speicheranfragen aus diesem Kontext und seinen Kindern zurück.
RefreshAsyncbool forceRefresh
Task
Aktualisiert diesen Kontext und alle registrierten Kindkomponenten.
ResetStatevoid
Setzt in diesem Zusammenhang ausstehende Änderungen zurück und alle registrierten Kinder.
SaveAsyncbool? refresh
Task<bool>
Speichere den Kontext und alle kindlichen Kontexte (Raster, Datensatz usw.).
Validatebool
Validiert diesen Kontext und alle registrierten Kindkomponenten.
Name: GetRequests
Typ: List<OrganizationRequest>
Beschreibung: Sammelt und gibt alle ausstehenden Speicheranfragen aus diesem Kontext und seinen Kindern zurück.
Name: RefreshAsync
Parameter: bool forceRefresh
Typ: Task
Beschreibung: Aktualisiert diesen Kontext und alle registrierten Kindkomponenten.
Name: ResetState
Typ: void
Beschreibung: Setzt in diesem Zusammenhang ausstehende Änderungen zurück und alle registrierten Kinder.
Name: SaveAsync
Parameter: bool? refresh
Typ: Task<bool>
Beschreibung: Speichere den Kontext und alle kindlichen Kontexte (Raster, Datensatz usw.).
Name: Validate
Typ: bool
Beschreibung: Validiert diesen Kontext und alle registrierten Kindkomponenten.