[!Note] Please note that this control has been deprecated and replaced with the Grid component, and as such, we recommend migrating to that control. This will not be receiving any new features, bug fixes will be deprioritized. For help or questions on migrating your codebase to the Data Grid, please contact support.
Edição de grade Blazor
A Tabela de Dados/Grade de Dados do Ignite UI for Blazor oferece suporte à edição de células e linhas com atualização em lote. Observe que, no momento, isso está limitado a colunas sem modelo.
Blazor Grid Editing Example
Visão geral
A edição na grade de dados Blazor é configurada usando a EditMode
opção da grade Blazor. Esta propriedade tem três opções diferentes, listadas abaixo:
None
: A edição não está habilitada.Cell
: Permitir que as células entrem no modo de edição e confirmem o valor ao sair do modo de edição.CellBatch
: Permite que as células entrem no modo de edição, mas as alterações serão armazenadas em cache posteriormente até que sejam confirmadas.Row
: Permitir que as linhas entrem no modo de edição e confirmem o valor ao sair.
Quando definido como CellBatch
, para confirmar as alterações, você deve executar o commitEdits
método da grade. A grade colocará as células em itálico até que elas sejam confirmadas, fornecendo controle sobre quando enviar as alterações de volta para a fonte de dados.
Além disso, o tratamento de erros pode ser realizado conectando o evento onCellValueChanging
e inspecionando novos valores antes que eles sejam confirmados. A grade expõe um método setEditError
que pode gerar uma mensagem de erro. Isso mantém a célula no modo de edição até que um valor válido seja inserido. Caso contrário, o método rejectEdit
da grade pode ser realizado para reverter o valor inválido. Se nenhum valor inválido for encontrado, você também pode confirmar suas alterações chamando o método acceptEdit
da grade.
Os commits podem ser aprovados ou recusados no nível onDataCommitting
da grade conectando por meio dos acceptCommit
métodos or rejectCommit
passando o argumento event commitID
como o parâmetro. Esse evento também expõe uma changes
coleção que armazena todas as modificações antes de serem confirmadas. Por exemplo, você pode verificar se uma confirmação foi de uma operação de adição, atualização ou exclusão por meio da TransactionType
propriedade exposta na changes
coleção e executar um acceptCommit
ou rejectCommit
quando necessário.
Excel Style Editing
EditOnKeyPress
permite que você comece a editar instantaneamente ao digitar de forma semelhante ao comportamento do Excel. Além disso, você pode definir a EditModeClickAction
propriedade como SingleClick
para permitir que os usuários editem células rapidamente enquanto navegam para outras células. Por padrão, é necessário clicar duas vezes para entrar no modo de edição.
Code Snippet
A seguir, demonstramos como configurar a edição na grade de dados e confirmar os dados.
<IgbDataGrid Height="100%" Width="100%" @ref="DataGridRef"
DataSource="DataSource"
EditMode="EditModeType.CellBatch" />
<button @onclick="OnCommitClick">Commit Data</button>
@code {
public IgbDataGrid DataGridRef;
private void OnCommitClick(MouseEventArgs e)
{
this.DataGridRef.CommitEdits();
}
}
Undo/Redo batch changes
A seguir, demonstramos como reverter alterações enquanto a atualização em lote está habilitada.
<IgbDataGrid Height="100%" Width="100%" @ref="DataGridRef"
DataSource="DataSource"
EditMode="EditModeType.CellBatch" />
<button @onclick="OnUndoClick">Undo</button>
<button @onclick="OnRedoClick">Redo</button>
@code {
public IgbDataGrid DataGridRef;
private void OnUndoClick(MouseEventArgs e)
{
this.DataGridRef.Undo();
}
private void OnRedoClick(MouseEventArgs e)
{
this.DataGridRef.Redo();
}
}
Error Validation and Commit Integrity
O seguinte demonstra como incorporar erros verificando se as células estão vazias ao sair do modo de edição e aceitando confirmações provenientes apenas de células atualizadas.
<IgbDataGrid Height="100%" Width="100%"
@ref="DataGridRef"
CellValueChanging="OnCellValueChanging"
DataCommitting="OnDataCommitting">
</IgbDataGrid>
@code {
public IgbDataGrid DataGridRef;
public void OnCellValueChanging(IgbGridCellValueChangingEventArgs e)
{
//check if value is empty upon exiting edit mode.
if (e.NewValue == "")
{
this.DataGridRef.SetEditError(e.EditID, "Error, cell is empty");
//or revert changes
this.DataGridRef.RejectEdit(e.EditID);
}
else
{
this.DataGridRef.AcceptEdit(e.EditID);
}
}
public void OnDataCommitting(IgbGridDataCommittingEventArgs e)
{
if (e.Changes[0].TransactionType == TransactionType.Update)
{
//commit was passed
this.DataGridRef.AcceptCommit(e.CommitID);
}
else
{
//commit was prevented
this.DataGridRef.RejectCommit(e.CommitID);
}
}
}
API References
CellBatch
EditModeClickAction
EditMode
SingleClick
TransactionType