Edición por lotes y transacciones en cuadrículas Angular
La función de Edición por Lotes de IgxGrid se basa en.TransactionService Sigue elTransaction Service class hierarchy tema para ver una visión general yigxTransactionService detalles de cómo se implementa.
A continuación se muestra un ejemplo detallado de cómo se habilita la edición por lotes para el componente Grid.
Angular Grid Batch Editing and Transactions Example
El siguiente ejemplo muestra un escenario en el que la cuadrícula habatchEditing activado y tiene activada la edición de filas. Esto último asegurará que la transacción se añada después de confirmar toda la edición de la fila.
Note
El estado de la transacción consta de todas las filas actualizadas, agregadas y eliminadas, y sus últimos estados.
Usage
Para empezar, importa elIgxGridModule archivo en el app.module.ts:
// app.module.ts
...
import { IgxGridModule } from 'igniteui-angular';
@NgModule({
...
imports: [..., IgxGridModule],
...
})
export class AppModule {}
Luego, solo tienes que habilitarbatchEditing desde tu Grid:
<igx-grid [data]="data" [batchEditing]="true">
...
</igx-grid>
Esto garantizará que se proporcione una instancia adecuada deTransaction servicio para la cuadrícula igx. El derechoTransactionService se proporciona a través de unTransactionFactory. Puedes aprender más sobre esta implementación interna en el tema de transacciones.
Después de habilitar la edición por lotes, define unaIgxGrid fuente de datos con enlace yrowEditable configúralo como verdadero y bind:
<igx-grid #grid [batchEditing]="true" [data]="data" [primaryKey]="'ProductID'" width="100%" height="500px"
[rowEditable]="true">
...
</igx-grid>
...
<button igxButton [disabled]="!grid.transactions.canUndo" (click)="undo()">Undo</button>
<button igxButton [disabled]="!grid.transactions.canRedo" (click)="redo()">Redo</button>
<button igxButton [disabled]="grid.transactions.getAggregatedChanges(false).length < 1"
(click)="openCommitDialog(dialogGrid)">Commit</button>
...
El siguiente código demuestra el uso de latransactions API: deshacer, rehacer, hacer commit.
export class GridBatchEditingSampleComponent {
@ViewChild('grid', { read: IgxGridComponent }) public gridRowEditTransaction: IgxGridComponent;
public undo() {
/* exit edit mode and commit changes */
this.grid.endEdit(true);
this.grid.transactions.undo();
}
public redo() {
/* exit edit mode and commit changes */
this.grid.endEdit(true);
this.grid.transactions.redo()
}
public commit() {
this.grid.transactions.commit(this.data);
this.toggle.close();
}
}
Note
La API de transacciones no gestionará el final de la edición y tendrías que hacerlo tú mismo. Si no,Grid se quedaría en modo edición. Una forma de hacerlo es llamandoendEdit al método correspondiente.
Note
DesactivarrowEditable la propiedad modificaráGrid para crear transacciones al cambiar la celda y no expondrá la superposición de edición de filas en la interfaz.
Remote Paging with Batch Editing Demo
Consulte la configuración de demostración completa
API References
Additional Resources
- Cree operaciones CRUD con igxGrid
- Descripción general de la cuadrícula
- Edición de cuadrícula
- Edición de filas de cuadrícula
- Agregar filas de cuadrícula