Registro de Contato
Registro da Conta
O MainContext componente é usado para encapsular um ou mais RecordContexts, SubGrids, ManyToManyLookupEditors ou coordena e coordena save, refresh, validation e rastreamento de estado sujo entre todos eles.
A MainContext pode conter qualquer combinação dos seguintes componentes filhos:
RecordContext — Envolve um único registro do Dataverse para edição.SubGrid — Exibe e gerencia uma coleção de registros relacionados.ManyToManyLookupEditor — Gerencia relacionamentos muitos-para-muitos.<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>Inclua um SaveContextButton dentro de um MenuBar para permitir que os usuários persistam as alterações. Quando o botão de salvar é clicado, todos os registros sujos de todos os componentes filhos são salvos em uma única requisição transacional para o Dataverse. Se algum registro falhar ao salvar, toda a transação é revertida e nenhuma alteração é mantida.
<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>Inclua um RefreshContextButton para permitir que os usuários descartem alterações não salvas e recarreguem os registros do Dataverse. Se houver alterações não salvas, o usuário recebe uma mensagem de confirmação antes da atualização ser realizada.
Por padrão, valida MainContext todos os componentes filhos antes de salvar. Defina ForceSuccessfulValidationBeforeSave para false desativar esse comportamento.
<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>Ele MainContext rastreia automaticamente se algum componente filho tem alterações não salvas via a IsDirty propriedade. Se um usuário tentar sair da página enquanto há alterações não salvas, uma caixa de confirmação é exibida. Defina DisableUnsavedChangesWarning para true suprimir esse diálogo para alterações de navegação. O aviso sempre aparece ao atualizar, independentemente dessa configuração.
<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>Use o OnBeforeSave callback para rodar lógica personalizada antes da operação de salvamento. Definido CancelEventArgs.Cancel para true impedir que o teste continue com o save.
function MyPage() {
const onBeforeSave = async () => {
// Execute validação personalizada ou lógica.
// Arremesse para abortar o save:
// lançar um novo erro ('Validação falhada');
};
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)
{
// Execute validação personalizada ou lógica
// Cancele o save se necessário:
// eventArgs.Cancel = true;
}
}O exemplo a seguir demonstra a MainContext com dois RecordContexts, a MenuBar com os botões de salvar e atualizar, e um handler personalizado OnBeforeSave .
Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
ChildContent | RenderFragment? | Os componentes filhos renderizados dentro desse contexto. | |
DisableUnsavedChangesWarning | bool? | Quando configurado como true, o diálogo de aviso de alterações não salvas não é exibido ao navegar para fora da página. O aviso sempre aparece ao atualizar, independentemente dessa configuração. Se não for explicitamente definido, o valor é herdado do contexto pai. | |
ForceSuccessfulValidationBeforeSave | bool | True | Deve ser realizada uma validação bem-sucedida do registro antes de permitir que o registro seja salvo. |
IsDirty | bool | False | Indica se esse contexto ou qualquer filho registrado tem alterações não salvas. |
ParentContext | MainContext? | O ancestral mais próximo é o MainContext, permitindo hierarquias de contexto aninhado. |
ChildContentDisableUnsavedChangesWarningForceSuccessfulValidationBeforeSaveIsDirtyParentContextNome | Tipo | Descrição |
|---|---|---|
OnBeforeSave | EventCallback<CancelEventArgs> | O retorno chamou antes de salvar. Permite cancelar a operação de salvamento. |
OnBeforeSaveNome | Parâmetros | Tipo | Descrição |
|---|---|---|---|
GetRequests | List<OrganizationRequest> | Coleta e retorna todos os pedidos de salvamento pendentes deste contexto e seus filhos. | |
RefreshAsync | bool forceRefresh | Task | Atualiza esse contexto e todos os componentes filhos registrados. |
ResetState | void | Resetas pendentes de mudanças nesse contexto e todas as crianças registradas. | |
SaveAsync | bool? refresh | Task<bool> | Salve o contexto e quaisquer contextos filhos (grade, registro, etc). |
Validate | bool | Valida esse contexto e todos os componentes filhos registrados. |
GetRequestsRefreshAsyncResetStateSaveAsyncValidate