Enregistrement de contact
Dossier du compte
Le MainContext composant est utilisé pour encapsuler un ou plusieurs RecordContexts, SubGrids, ou ManyToManyLookupEditors et coordonne sauvegarder, rafraîchir, valider et suivre les états inactifs à travers tous.
A MainContext peut contenir n’importe quelle combinaison des composants enfants suivants :
RecordContext — Enveloppe un seul enregistrement Dataverse pour l’édition.SubGrid — Affiche et gère une collection de documents connexes.ManyToManyLookupEditor — Gère les relations de multiples.<MainContext>
<RecordContext table="contact" id={contactId}>
<TextEdit columnName="firstname" />
<TextEdit columnName="lastname" />
</RecordContext>
<RecordContext table="account" id={accountId}>
<TextEdit columnName="name" />
</RecordContext>
</MainContext><MainContext>
<RecordContext Record="@_contact">
<TextEdit ColumnName="firstname" />
<TextEdit ColumnName="lastname" />
</RecordContext>
<RecordContext Record="@_account">
<TextEdit ColumnName="name" />
</RecordContext>
</MainContext>Incluez un SaveContextButton intérieur MenuBar pour permettre aux utilisateurs de persévérer les changements. Lorsque le bouton d’enregistrement est cliqué, tous les enregistrements défectueux sur tous les composants enfants sont sauvegardés dans une seule requête transactionnelle vers Dataverse. Si un enregistrement ne s’enregistre pas, toute la transaction est annulée et aucun changement n’est poursuivi.
<MainContext>
<MenuBar>
<SaveContextButton />
<RefreshContextButton />
</MenuBar>
<RecordContext table="contact" id={contactId}>
<TextEdit columnName="firstname" />
</RecordContext>
<RecordContext table="account" id={accountId}>
<TextEdit columnName="name" />
</RecordContext>
</MainContext><MainContext>
<MenuBar>
<SaveContextButton />
<RefreshContextButton />
</MenuBar>
<RecordContext Record="@_contact">
<TextEdit ColumnName="firstname" />
</RecordContext>
<RecordContext Record="@_account">
<TextEdit ColumnName="name" />
</RecordContext>
</MainContext>Inclure un RefreshContextButton pour permettre aux utilisateurs de supprimer les modifications non enregistrées et de recharger les enregistrements depuis Dataverse. S’il y a des modifications non enregistrées, l’utilisateur reçoit une notification de confirmation avant que le rafraîchissement ne soit effectué.
Par défaut, il MainContext valide tous les composants enfants avant de sauvegarder. Réglez ForceSuccessfulValidationBeforeSave pour false désactiver ce comportement.
<MainContext forceSuccessfulValidationBeforeSave={false}>
<SaveContextButton />
<RecordContext table="account" id={accountId}>
<TextEdit columnName="name" />
</RecordContext>
</MainContext><MainContext ForceSuccessfulValidationBeforeSave="false">
<MenuBar>
<SaveContextButton />
</MenuBar>
<RecordContext Record="@_record">
<TextEdit ColumnName="name" />
</RecordContext>
</MainContext>Il MainContext suit automatiquement si un composant enfant présente des modifications non enregistrées via cette IsDirty propriété. Si un utilisateur tente de s’éloigner de la page alors qu’il y a des modifications non enregistrées, une boîte de dialogue de confirmation s’affiche. Réglez DisableUnsavedChangesWarning pour true supprimer ce dialogue pour les changements de navigation. L’avertissement est toujours affiché lors du rafraîchissement, quel que soit ce réglage.
<MainContext warnOnUnsavedChanges={false}>
<MenuBar>
<SaveContextButton />
<RefreshContextButton />
</MenuBar>
<RecordContext table="account" id={accountId}>
<TextEdit columnName="name" />
</RecordContext>
</MainContext><MainContext DisableUnsavedChangesWarning="true">
<MenuBar>
<SaveContextButton />
<RefreshContextButton />
</MenuBar>
<RecordContext Record="@_record">
<TextEdit ColumnName="name" />
</RecordContext>
</MainContext>Utilisez le OnBeforeSave rappel pour exécuter une logique personnalisée avant l’opération de sauvegarde. Réglez CancelEventArgs.Cancel pour true empêcher la sauvegarde de continuer.
function MyPage() {
const onBeforeSave = async () => {
// Exécutez une validation ou une logique personnalisée.
// Lancer pour annuler la sauvegarde :
// lancer une nouvelle erreur (« Validation échouée ») ;
};
return (
<MainContext onBeforeSave={onBeforeSave}>
<SaveContextButton />
<RecordContext table="account" id={accountId}>
<TextEdit columnName="name" />
</RecordContext>
</MainContext>
);
}<MainContext OnBeforeSave="OnBeforeSave">
<MenuBar>
<SaveContextButton />
</MenuBar>
<RecordContext Record="@_record">
<TextEdit ColumnName="name" />
</RecordContext>
</MainContext>
@code {
private async Task OnBeforeSave(CancelEventArgs eventArgs)
{
// Exécuter une validation ou une logique personnalisée
// Annulez la sauvegarde si besoin :
// eventArgs.Cancel = true ;
}
}L’exemple suivant montre un MainContext avec deux RecordContextsboutons , un MenuBar avec des boutons de sauvegarde et de rafraîchissement, ainsi qu’un gestionnaire personnalisé OnBeforeSave .
Nom | Type | Par défaut | Description |
|---|---|---|---|
ChildContent | RenderFragment? | Les composants enfants sont rendus dans ce contexte. | |
DisableUnsavedChangesWarning | bool? | Lorsqu’elle est réglée sur true, la boîte d’avertissement des modifications non enregistrées n’est pas affichée lors de la navigation hors de la page. L’avertissement est toujours affiché lors du rafraîchissement, quel que soit ce réglage. Si elle n’est pas explicitement définie, la valeur est héritée du contexte parent. | |
ForceSuccessfulValidationBeforeSave | bool | True | Si une validation réussie de l’enregistrement est effectuée avant d’autoriser sa sauvegarde. |
IsDirty | bool | False | Indique si ce contexte ou tout enfant enregistré présente des modifications non enregistrées. |
ParentContext | MainContext? | L’ancêtre le plus proche, MainContext, permettant des hiérarchies de contextes imbriqués. |
ChildContentDisableUnsavedChangesWarningForceSuccessfulValidationBeforeSaveIsDirtyParentContextNom | Type | Description |
|---|---|---|
OnBeforeSave | EventCallback<CancelEventArgs> | Rappel a appelé avant de sauvegarder. Cela permet d’annuler l’opération de sauvegarde. |
OnBeforeSaveNom | Paramètres | Type | Description |
|---|---|---|---|
GetRequests | List<OrganizationRequest> | Collecte et renvoie toutes les requêtes de sauvegarde en attente provenant de ce contexte et de ses enfants. | |
RefreshAsync | bool forceRefresh | Task | Cela rafraîchit ce contexte et tous les composants enfants enregistrés. |
ResetState | void | Réinitialise en attendant les changements dans ce contexte et tous les enfants enregistrés. | |
SaveAsync | bool? refresh | Task<bool> | Sauvegardez le contexte ainsi que les contextes enfants (grille, enregistrement, etc.). |
Validate | bool | Valide ce contexte et tous les composants enfants enregistrés. |
GetRequestsRefreshAsyncResetStateSaveAsyncValidate