Web Components Estilo condicional de cuadrícula jerárquica
The Ignite UI for Web Components Conditional Styling feature in Web Components Hierarchical Grid allows custom styling on a row or cell level. The IgcHierarchicalGridComponent Conditional Styling functionality is used to visually emphasize or highlight data that meets certain criteria, making it easier for users to identify important information or trends within the grid.
Hierarchical Grid Conditional Row Styling
The IgcHierarchicalGridComponent component in Ignite UI for Web Components provides two ways to conditional styling of rows based on custom rules.
- Estableciendo
rowClassesla entrada en elIgcHierarchicalGridComponentcomponente; - Estableciendo
rowStylesla entrada en elIgcHierarchicalGridComponentcomponente;
Más adelante en este tema los cubriremos ambos con más detalle.
Using Row Classes
Puedes estilizar condicionalmente lasIgcHierarchicalGridComponent filas estableciendo larowClasses entrada y definiendo reglas personalizadas.
<igc-hierarchical-grid id="grid" height="600px" width="100%">
</igc-hierarchical-grid>
constructor() {
var grid = this.grid = document.getElementById('grid') as IgcHierarchicalGrid;
grid.rowClasses = this.rowClasses;
}
LarowClasses entrada acepta un literal objeto que contiene pares clave-valor, donde la clave es el nombre de la clase CSS, mientras que el valor es una función de callback que devuelve un valor booleano o booleano.
public rowClasses = {
activeRow: (row: IgcRowType) => row.index === 0
}
.activeRow {
border: 2px solid #fc81b8;
border-left: 3px solid #e41c77;
}
Demo
Using Row Styles
ElIgcHierarchicalGridComponent control expone larowStyles propiedad que permite el estilizado condicional de las filas de datos. De forma similar arowClasses acepta un literal objeto donde las claves son propiedades de estilo y los valores son expresiones para su evaluación. Además, puedes aplicar peinado normal (sin condiciones).
La firma de callback para ambos
rowStylesyrowClasseses:
(row: IgcRowType) => boolean
Definamos nuestros estilos:
public rowStyles = {
background:(row: RowType) => row.data['HasGrammyAward'] ? '#eeddd3' : '#f0efeb',
'border-left': (row: RowType) => row.data['HasGrammyAward'] ? '2px solid #dda15e' : null
};
public childRowStyles = {
'border-left': (row: RowType) => row.data['BillboardReview'] > 70 ? '3.5px solid #dda15e' : null
};
<igc-hierarchical-grid id="hierarchicalGrid" auto-generate="true"
height="580px" width="100%">
<igc-row-island id="rowIsland1" child-data-key="Albums" auto-generate="true" >
</igc-row-island>>
</igc-hierarchical-grid>
constructor() {
var hierarchicalGrid = this.hierarchicalGrid = document.getElementById('hierarchicalGrid') as IgcHierarchicalGridComponent;
var rowIsland1 = this.rowIsland1 = document.getElementById('rowIsland1') as IgcRowIslandComponent;
hierarchicalGrid.rowStyles = this.rowStyles;
rowIsland1.rowStyles = this.childRowStyles;
}
Demo
Hierarchical Grid Conditional Cell Styling
Descripción general
The IgcHierarchicalGridComponent component in Ignite UI for Web Components provides two ways to conditional styling of cells based on custom rules.
- Estableciendo la
IgcColumnComponententradacellClassesa un literal de objeto que contiene pares clave-valor. La clave es el nombre de la clase CSS, mientras que el valor es una función de callback que devuelve un valor booleano o booleano. El resultado es un diseño material conveniente de la célula.
Using Cell Classes
Puedes estilizar condicionalmente lasIgcHierarchicalGridComponent celdas fijando elIgcColumnComponent cellClasses Introduzca y defina reglas personalizadas.
<igc-column id="grammyNominations" field="GrammyNominations" data-type="Number"></igc-column>
constructor() {
var grammyNominations = document.getElementById('grammyNominations') as IgcColumnComponent;
grammyNominations.cellClasses = this.grammyNominationsCellClassesHandler;
}
LacellClasses entrada acepta un literal objeto que contiene pares clave-valor, donde la clave es el nombre de la clase CSS, mientras que el valor es una función de callback que devuelve un valor booleano o booleano.
public grammyNominationsCellClassesHandler = {
downFont: (rowData: any, columnKey: any): boolean => rowData[columnKey] < 5,
upFont: (rowData: any, columnKey: any): boolean => rowData[columnKey] >= 6
};
.upFont {
color: green !important;
}
.downFont {
color: red !important;
}
Demo
- Usando la
IgcColumnComponententradacellStylesque acepta un objeto literal donde las claves son propiedades de estilo y los valores son expresiones para su evaluación.
La firma de callback para ambos
cellStylesycellClassesahora se ha cambiado a:
(rowData: any, columnKey: string, cellValue: any, rowIndex: number) => boolean
Using Cell Styles
Las columnas exponen lacellStyles propiedad que permite un estilizado condicional de las celdas de columna. De forma similar acellClasses acepta un literal objeto donde las claves son propiedades de estilo y los valores son expresiones para su evaluación. Además, puedes aplicar peinados normales con facilidad (sin ninguna condición).
Definamos nuestros estilos:
public cellStylesHandler = {
background: (rowData, columnKey, cellValue, rowIndex) => rowIndex % 2 === 0 ? "#EFF4FD" : null,
color: (rowData, columnKey, cellValue, rowIndex) => {
if (columnKey === "Debut") {
return cellValue > 2000 ? "#28a745" : "#dc3545";
}
return undefined;
}
}
<igc-column id="col1">
</igc-column>
constructor() {
var col1 = document.getElementById('col1') as IgcColumnComponent;
col1.cellStyles = this.cellStylesHandler;
}
Demo
Known issues and limitations
- Si hay celdas vinculadas a la misma condición (de diferentes columnas) y una celda se actualiza, las otras celdas no se actualizarán según el nuevo valor, si se cumple la condición.
Se debe realizar una verificación para aplicar los cambios al resto de celdas. El siguiente ejemplo muestra cómo hacerlo.
public backgroundClasses = {
myBackground: (rowData: any, columnKey: string) => {
return rowData.Col2 < 10;
}
};
public editDone(evt) {
this.Col1.cellClasses = {...this.backgroundClasses};
}
<igc-hierarchical-grid id="grid1" height="500px" width="100%" >
<igc-column id="Col1" field="Col1" data-type="number"></igx-column>
<igc-column id="Col2" field="Col2" data-type="number" editable="true"></igx-column>
<igc-column id="Col3" field="Col3" header="Col3" data-type="string"></igx-column>
<igc-hierarchical-grid>
constructor() {
var grid = this.grid = document.getElementById('grid1') as IgcHierarchicalGrid;
var Col1 = this.Col1 = document.getElementById('Col1') as IgcColumnComponent;
var Col2 = this.Col2 = document.getElementById('Col2') as IgcColumnComponent;
var Col3 = this.Col3 = document.getElementById('Col3') as IgcColumnComponent;
grid.data = this.data;
grid.onCellEdit = this.editDone;
Col1.cellClasses = this.backgroundClasses;
Col2.cellClasses = this.backgroundClasses;
Col3.cellClasses = this.backgroundClasses;
}
API References
Additional Resources
Nuestra comunidad es activa y siempre da la bienvenida a nuevas ideas.