Edición de filas de cuadrícula jerárquica React
The Ignite UI for React Row Editing feature in React Hierarchical Grid allows editing data directly within the IgrHierarchicalGrid. On top of this convenient way to manipulate data, there’s a powerful API for full CRUD operations. You can perform grid row editing by clicking on a row and pressing Enter key. Another quick way is to double click with the mouse on the row that needs to be modified.
React Hierarchical Grid Row Editing Example
El siguiente ejemplo demuestra cómo habilitar la edición de filas en elIgrHierarchicalGrid. Cambiar el valor de una celda y luego hacer clic o navegar a otra celda de la misma fila no actualizará el valor de la fila hasta que se confirme usando el botón Hecho, o se descarte usando el botón Cancelar.
[!Note] When a row is in edit mode, clicking on a cell in another row will act like the "Done" button is pressed, submitting all changes made in the previous row. If the newly focused cell is editable, the new row enters edit mode as well. However, if the cell is not editable, only the previous row exits edit mode.
Row Editing Usage
Definamos unaIgrHierarchicalGrid con una fuente de datos limitada yrowEditable fijécelos en verdadero:
<IgrHierarchicalGrid autoGenerate={false} data={singersData} ref={hierarchicalGridRef} id="hierarchicalGrid" primaryKey="ID" rowEditable={true}>
<IgrColumn field="Artist" header="Artist" dataType="string" />
<IgrColumn field="Photo" header="Photo" dataType="image" editable={false} />
<IgrColumn field="Debut" header="Debut" dataType="number" />
<IgrColumn field="GrammyNominations" header="Grammy Nominations" dataType="number" />
<IgrColumn field="GrammyAwards" header="Grammy Awards" dataType="number" />
<IgrRowIsland childDataKey="Albums" autoGenerate={false} primaryKey="Album" rowEditable={true}>
<IgrColumn field="Album" header="Album" dataType="string" />
<IgrColumn field="LaunchDate" header="Launch Date" dataType="date" />
<IgrColumn field="BillboardReview" header="Billboard Review" dataType="string" />
<IgrColumn field="USBillboard200" header="US Billboard 200" dataType="string" />
<IgrRowIsland childDataKey="Songs" autoGenerate={false} primaryKey="Number" rowEditable={true}>
<IgrColumn field="Number" header="No." dataType="string" />
<IgrColumn field="Title" header="Title" dataType="string" />
<IgrColumn field="Released" header="Released" dataType="date" />
<IgrColumn field="Genre" header="Genre" dataType="string" />
</IgrRowIsland>
</IgrRowIsland>
<IgrRowIsland childDataKey="Tours" autoGenerate={false} primaryKey="Tour" rowEditable={true}>
<IgrColumn field="Tour" header="Tour" dataType="string" />
<IgrColumn field="StartedOn" header="Started on" dataType="string" />
<IgrColumn field="Location" header="Location" dataType="string" />
<IgrColumn field="Headliner" header="Headliner" dataType="string" />
</IgrRowIsland>
</IgrHierarchicalGrid>
[!Note] Setting primary key is mandatory for row editing operations.
[!Note] Enabling editing for individual columns is not necessary. Using the
rowEditableproperty in theIgrHierarchicalGrid, all rows, with definedfieldproperty (excluding the primary row) will be editable. If you want to disable editing for a specific column, simply set theeditableinput of that column tofalse.
[!Note] The
IgrHierarchicalGridutilizesBaseTransactionService- an internal provider that holds pending cell changes until the row state is either submitted or cancelled.
Positioning
La posición predeterminada de la superposición estará debajo de la fila que está en modo de edición.
Si no hay espacio debajo de la fila, aparecerá una superposición encima de la fila.
Una vez que se muestra, arriba o abajo, la superposición mantendrá esta posición durante el desplazamiento, hasta que se cierre la superposición.
Behavior
Si la fila está en modo de edición, la edición continuará si se hace clic en una celda de la misma fila.
Al hacer clic en el botón "Listo", finalizará la edición de la fila y enviará los cambios a la fuente de datos o a una transacción, si está disponible. Además, la fila saldrá del modo de edición.
Al hacer clic en el botón "Cancelar", se revertirán todos los cambios actuales en la fila y la fila saldrá del modo de edición.
Si la fila está en modo de edición, al hacer clic en una celda de otra fila finalizará la edición de la fila actual y se enviarán nuevos cambios en la fila (el mismo comportamiento al hacer clic en el botón "Listo"). Si la nueva celda que recibe el foco es editable, entonces la nueva fila también ingresa al modo de edición, mientras que si la celda no es editable, solo la fila anterior sale del modo de edición.
Si la fila está en modo edición y
IgrHierarchicalGridse desplaza para que esa fila salga del área visible, esta última seguirá en modo edición. CuandoIgrHierarchicalGridse desplaza, para que la fila vuelva a ser visible, la fila seguirá en modo edición. Cuando se hace clic fuera de laIgrHierarchicalGridcelda, la celda también permanece en modo edición.Al realizar operaciones de ordenación, filtrado, búsqueda y ocultación, todos los cambios actuales en la fila se revierten y la fila sale del modo de edición.
Al realizar operaciones de paginación, redimensionamiento, fijación y movimiento, sale del modo de edición y envía el valor más reciente.
Cada celda modificada recibe estilo editado hasta que se termina la edición de fila. Este es el comportamiento cuando
IgrHierarchicalGridno se le proporciona transacción. Cuando hay transacciones disponibles, se aplica el estilo de edición de celdas hasta que todos los cambios estén comprometidos.
Keyboard Navigation
ENTER y F2 entra en modo de edición de filas
ESC Sale del modo de edición de fila y no envía ninguno de los cambios de celda realizados mientras la fila estaba en modo de edición.
TAB mueve el foco de una celda editable en la fila a la siguiente y de la celda editable más a la derecha a los botones CANCELAR y LISTO. La navegación desde el botón LISTO va a la celda editable más a la izquierda dentro de la fila actualmente editada.
Feature Integration
Cualquier operación de cambio de datos finalizará las operaciones de edición de filas y enviará los cambios de filas actuales. Esto incluirá operaciones como ordenar, cambiar criterios de agrupación y filtrado, paginación, etc.
Los resúmenes se actualizarán una vez finalizada la edición de la fila. Lo mismo es válido para otras funciones como ordenar, filtrar, etc.
Customizing Row Editing Overlay
Customizing Text
Es posible personalizar el texto de la superposición de edición de filas mediante plantillas.
LaRowChangesCount propiedad queda expuesta y contiene el conteo de células modificadas.
const rowEditTextTemplate = (ctx: IgrGridRowEditTextTemplateContext) =>{
return (
<>
Changes: {ctx.implicit}
</>
);
}
Customizing Buttons
También es posible personalizar los botones de la superposición de edición de filas mediante plantillas.
const rowEditActionsTemplate =(ctx: IgrGridRowEditActionsTemplateContext) => {
const endRowEdit = ctx.implicit;
return (
<>
<button onClick={(event) => endRowEdit(false, event)}>Cancel</button>
<button onClick={(event) => endRowEdit(true, event)}>Apply</button>
</>
);
}
Styling
Además de los temas predefinidos, la cuadrícula se puede personalizar aún más configurando algunas de las propiedades CSS disponibles. En caso de que desee cambiar algunos de los colores, primero debe establecer una clase para la cuadrícula:
<IgrHierarchicalGrid className="grid"></IgrHierarchicalGrid>
Luego configure las propiedades CSS relacionadas para esa clase:
.grid {
--ig-banner-banner-background: #e3e3e3;
--ig-banner-banner-message-color: #423589;
}
Demo
Known Issues and Limitations
Cuando la cuadrícula no
primaryKeytiene un sistema fijo y los escenarios de datos remotos están habilitados (al paginar, ordenar, filtrar o desplazar las solicitudes de disparo a un servidor remoto para recuperar los datos que se mostrarán en la cuadrícula), una fila perderá el siguiente estado tras completar una solicitud de datos:Selección de fila
Fila Expandir/contraer
Edición de filas
Fijación de filas
API References
rowEditableRowEditEnterRowEditRowEditDoneendEditfieldeditableprimaryKeyIgrHierarchicalGrid
Additional Resources
Nuestra comunidad es activa y siempre da la bienvenida a nuevas ideas.