Tenga en cuenta que este control ha quedado obsoleto y reemplazado con el componente Grid y, como tal, recomendamos migrar a ese control. Esto no recibirá ninguna característica nueva, las correcciones de errores no tendrán prioridad. Para obtener ayuda o preguntas sobre la migración de su código base a Data Grid, comuníquese con el soporte.

    Web Components Edición de cuadrícula

    La tabla de datos Ignite UI for Web Components / cuadrícula de datos admite la edición de celdas y filas con actualización por lotes. Tenga en cuenta que actualmente esto se limita a las columnas que no tienen plantilla.

    Web Components Ejemplo de edición de cuadrícula

    EXAMPLE
    DATA
    TS
    HTML
    CSS

    ¿Te gusta esta muestra? Obtenga acceso a nuestro kit de herramientas de Ignite UI for Web Components completo y comience a crear sus propias aplicaciones en minutos. Descárgalo gratis.

    Descripción general

    La edición en la cuadrícula de datos de Web Components se configura mediante la editMode opción de la cuadrícula Web Components. Esta propiedad tiene tres opciones diferentes, que se enumeran a continuación:

    • None: la edición no está habilitada.
    • Cell: permita que las celdas ingresen al modo de edición y confirme el valor al salir del modo de edición.
    • CellBatch: permite que las celdas entren en modo de edición, pero los cambios se almacenarán en caché más tarde hasta que se confirmen.
    • Row: permite que las filas entren en modo de edición y confirmen el valor al salir.

    Cuando se establece en CellBatch, para confirmar los cambios debe realizar el método commitEdits desde la cuadrícula. La cuadrícula pondrá en cursiva las celdas hasta que se confirmen, lo que proporciona control sobre cuándo enviar los cambios a la fuente de datos.

    Además, el manejo de errores se puede realizar conectando el evento onCellValueChanging e inspeccionando nuevos valores antes de confirmarlos. La cuadrícula expone un método setEditError que puede generar un mensaje de error. Esto mantiene la celda en modo de edición hasta que se ingresa un valor válido. De lo contrario, se puede ejecutar el método rejectEdit de la cuadrícula para revertir el valor no válido. Si no se encuentra ningún valor no válido, también puede confirmar los cambios llamando al método acceptEdit de la cuadrícula.

    Las confirmaciones se pueden aprobar o rechazar en el nivel de la grilla conectando onDataCommitting a través de los métodos acceptCommit o rejectCommit pasando el argumento del evento commitID como parámetro. Este evento también expone una colección changes que almacena todas las modificaciones antes de confirmarse. Por ejemplo, puede verificar si una confirmación proviene de una operación de agregar, actualizar o eliminar a través de la propiedad TransactionType expuesta en la colección changes y realizar una acceptCommit o rejectCommit cuando sea necesario.

    Ignite UI for Web Components | CTA Banner

    Edición de estilo de Excel

    editOnKeyPress le permite comenzar a editar instantáneamente al escribir de manera similar a como se comporta Excel. Además, puede configurar la propiedad editModeClickAction en SingleClick para permitir a los usuarios editar celdas rápidamente mientras navegan a otras celdas. De forma predeterminada, es necesario hacer doble clic para ingresar al modo de edición.

    Fragmento de código

    A continuación se muestra cómo configurar la edición en la cuadrícula de datos y la confirmación de los datos.

    <button id="clickCommit">Commit</button>
    <igc-data-grid id="grid"
        height="100%"
        width="100%"
        activation-mode="Cell"
        edit-mode="Cell">
    </igc-data-grid>
    html
    import { IgcDataGridComponent } from 'igniteui-webcomponents-grids';
    
    this.onCommitClick = this.onCommitClick.bind(this);
    
    public onCommitClick() {
        this.grid.commitEdits();
    }
    ts

    Deshacer/Rehacer cambios por lotes

    A continuación se muestra cómo revertir los cambios mientras la actualización por lotes está habilitada.

    <igc-data-grid id="grid"
          height="100%"
          width="100%"
          activation-mode="Cell"
          edit-mode="Cell">
    </igc-data-grid>
    <button id="undoClick" disabled="true">Undo</button>
    <button id="redoClick" disabled="true">Redo</button>
    html
    import { IgcDataGridComponent } from 'igniteui-webcomponents-grids';
    
    public onUndoClick() {
        this.grid.undo();
        if (this.grid.editMode === EditModeType.CellBatch && this.redo !== null)
        {
            this.redo.disabled = false;
        }
    }
    
    public onRedoClick() {
        this.grid.redo();
    }
    ts

    Validación de errores e integridad del compromiso

    A continuación se muestra cómo incorporar el error al verificar si las celdas están vacías al salir del modo de edición y se aceptan confirmaciones que provienen únicamente de celdas actualizadas.

    <igc-data-grid
        id="grid"
        height="calc(100% - 50px)"
        width="100%"
        activation-mode="Cell"
        selection-mode="SingleRow"
        default-column-min-width="125"
        is-column-options-enabled="true"
        auto-generate-columns="false"
        edit-mode="Cell">
    html
    import { IgcGridDataCommittingEventArgs } from 'igniteui-webcomponents-grids';
    import { TransactionType } from 'igniteui-webcomponents-core'
    
    this.onCellValueChanging = this.onCellValueChanging.bind(this);
    this.grid.cellValueChanging = this.onCellValueChanging;
    
    this.onDataCommitting = this.onDataCommitting.bind(this);
    this.grid.dataCommitting = this.onDataCommitting;
    
    
    public onCellValueChanging (s: IgcDataGridComponent, e: IgcGridCellValueChangingEventArgs) {
        if (s.editMode === EditModeType.CellBatch && this.undo !== null)
        {
            this.undo.disabled = false;
        }
    
        //check if value is empty upon exiting edit mode.
        if (e.newValue === "") {
            s.setEditError(e.editID, "Error, cell is empty");
            //or revert changes
            s.rejectEdit(e.editID);
        }
        else {
            s.acceptEdit(e.editID);
        }
    }
    
    public onDataCommitting (s: IgcDataGridComponent, e: IgcGridDataCommittingEventArgs) {
        if (e.changes[0].transactionType === TransactionType.Update) {
            //commit was passed
            s.acceptCommit(e.commitID);
        }
        else{
            //commit was prevented
            s.rejectCommit(e.commitID);
        }
    }
    ts

    Referencias de API