Edição em lote e transações do Angular Tree Grid
O recurso Batch Editing do IgxTreeGrid é baseado no HierarchicalTransactionService
. Siga o tópico Transaction Service class hierarchy
para ver uma visão geral do igxHierarchicalTransactionService
e detalhes sobre como ele é implementado.
Abaixo está um exemplo detalhado de como a Edição em Lote é habilitada para o componente Grade em Árvore.
Angular Tree Grid Batch Editing and Transactions Example
O exemplo a seguir demonstra um cenário, onde o treeGrid tem batchEditing
habilitado e tem edição de linha habilitada. O último garantirá que a transação será adicionada após a edição de linha inteira ser confirmada.
Note
O estado da transação consiste em todas as linhas atualizadas, adicionadas e excluídas e seus últimos estados.
Usage
Para começar, importe o IgxTreeGridModule
no arquivo app.module.ts:
// app.module.ts
...
import { IgxTreeGridModule } from 'igniteui-angular';
@NgModule({
...
imports: [..., IgxTreeGridModule],
...
})
export class AppModule {}
Então, tudo o que você precisa fazer é habilitar batchEditing
na sua grade de árvore:
<igx-tree-grid [data]="data" [batchEditing]="true">
...
</igx-tree-grid>
Isso garantirá que uma instância adequada do serviço Transaction
seja fornecida para o igx-tree-grid. O TransactionService
adequado é fornecido por meio de um TransactionFactory
. Você pode aprender mais sobre essa implementação interna no tópico de transações.
Após a edição em lote ser habilitada, defina um IgxTreeGrid
com a fonte de dados vinculada e rowEditable
definido como verdadeiro e vincule:
<igx-tree-grid #treeGrid [batchEditing]="true" [data]="data" primaryKey="employeeID" foreignKey="PID"
width ="100%" height ="500px" rowEditable=true>
...
</igx-tree-grid>
...
<button igxButton (click)="addRow()">Add Root Level Row</button>
<button igxButton [disabled]="!treeGrid.transactions.canUndo" (click)="undo()">Undo</button>
<button igxButton [disabled]="!treeGrid.transactions.canRedo" (click)="redo()">Redo</button>
<button igxButton [disabled]="treeGrid.transactions.getAggregatedChanges(false).length < 1"
(click)="openCommitDialog()">Commit</button>
...
O código a seguir demonstra o uso da API HierarchicalTransactionService
- desfazer, refazer, confirmar.
export class TreeGridBatchEditingSampleComponent {
@ViewChild('treeGrid', { read: IgxTreeGridComponent }) public treeGrid: IgxTreeGridComponent;
public undo() {
/* exit edit mode and commit changes */
this.treeGrid.endEdit(true);
this.treeGrid.transactions.undo();
}
public redo() {
/* exit edit mode and commit changes */
this.treeGrid.endEdit(true);
this.treeGrid.transactions.redo();
}
public commit() {
this.treeGrid.transactions.commit(this.data);
this.dialog.close();
}
}
Note
A API de transações não manipulará o fim da edição e você precisaria fazer isso sozinho. Caso contrário, Tree Grid
permaneceria no modo de edição. Uma maneira de fazer isso é chamando endEdit
no respectivo método.
Excluir um nó pai no Tree Grid
tem algumas peculiaridades. Se você estiver usando dados hierárquicos, os filhos serão excluídos ao excluir seus pais. Se você estiver usando dados simples, você pode definir o comportamento desejado usando a propriedade cascadeOnDelete
do Tree Grid
. Esta propriedade indica se os registros filhos devem ser excluídos quando seus pais forem excluídos (por padrão, é definido como true
).
Note
Desabilitar a propriedade rowEditable
modificará Tree Grid
para criar transações na alteração de célula e não exporá a sobreposição de edição de linha na interface do usuário.
API References
Additional Resources
- Crie operações CRUD com igxGrid
- Visão geral da grade de árvore
- Edição de grade de árvore
- Edição de linhas da grade de árvore
- Adicionando Linha de Grade de Árvore