Web Components Estilo condicional de cuadrícula jerárquica
La característica de estilo condicional Ignite UI for Web Components en Web Components cuadrícula jerárquica permite el estilo personalizado a nivel de fila o celda. La IgcHierarchicalGridComponent
funcionalidad de estilo condicional se utiliza para enfatizar o resaltar visualmente los datos que cumplen determinados criterios, lo que facilita a los usuarios la identificación de información importante o tendencias dentro de la cuadrícula.
Hierarchical Grid Conditional Row Styling
El IgcHierarchicalGridComponent
componente de Ignite UI for Web Components proporciona dos formas de aplicar estilos condicionales a las filas en función de reglas personalizadas.
- Al establecer
rowClasses
la entrada en elIgcHierarchicalGridComponent
componente; - Al establecer
rowStyles
la entrada en elIgcHierarchicalGridComponent
componente;
Más adelante en este tema los cubriremos ambos con más detalle.
Using Row Classes
Puede aplicar estilo condicional a las IgcHierarchicalGridComponent
filas estableciendo la rowClasses
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;
}
La entrada rowClasses
acepta un objeto literal, que contiene pares clave-valor, donde la clave es el nombre de la clase CSS, mientras que el valor es una función de devolución de llamada 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
El IgcHierarchicalGridComponent
control expone la rowStyles
propiedad que permite el estilo condicional de las filas de datos. De rowClasses
manera similar, acepta un objeto literal donde las claves son propiedades de estilo y los valores son expresiones para evaluación. Además, puedes aplicar un peinado regular (sin ninguna condición).
The callback signature for both
rowStyles
androwClasses
is:
(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
El IgcHierarchicalGridComponent
componente de Ignite UI for Web Components proporciona dos formas de aplicar estilos condicionales a las celdas en función de reglas personalizadas.
- Estableciendo la
IgcColumnComponent
entradacellClasses
en un literal de objeto que contenga pares clave-valor. La clave es el nombre de la clase CSS, mientras que el valor es una función de devolución de llamada que devuelve un valor booleano o booleano. El resultado es un conveniente estilo de material de la célula.
Using Cell Classes
Puede aplicar estilo condicional a las IgcHierarchicalGridComponent
celdas estableciendo el parámetro IgcColumnComponent
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;
}
La entrada cellClasses
acepta un objeto literal, que contiene pares clave-valor, donde la clave es el nombre de la clase CSS, mientras que el valor es una función de devolución de llamada 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
- Mediante el uso de la
IgcColumnComponent
entradacellStyles
que acepta un objeto literal donde las claves son propiedades de estilo y los valores son expresiones para evaluación.
La firma de devolución de llamada para
cellStyles
ycellClasses
ahora se cambia a:
(rowData: any, columnKey: string, cellValue: any, rowIndex: number) => boolean
Using Cell Styles
Las columnas exponen la propiedad cellStyles
que permite aplicar estilos condicionales a las celdas de las columnas. Al igual que cellClasses
acepta un objeto literal donde las claves son propiedades de estilo y los valores son expresiones para evaluación. Además, puedes aplicar el peinado habitual con facilidad (sin condiciones).
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.