Web Components Estilo condicional de grade hierárquica
O recurso Ignite UI for Web Components Estilo condicional em Web Components grade hierárquica permite o estilo personalizado em um nível de linha ou célula. A IgcHierarchicalGridComponent funcionalidade Estilo condicional é usada para enfatizar ou realçar visualmente os dados que atendem a determinados critérios, tornando mais fácil para os usuários identificar informações ou tendências importantes na grade.
Hierarchical Grid Conditional Row Styling
O IgcHierarchicalGridComponent componente no Ignite UI for Web Components fornece duas maneiras de estilizar condicionalmente linhas com base em regras personalizadas.
- Ao definir rowClassesaIgcHierarchicalGridComponententrada no componente;
- Ao definir rowStylesaIgcHierarchicalGridComponententrada no componente;
Mais adiante neste tópico, abordaremos os dois com mais detalhes.
Using Row Classes
Você pode estilizar condicionalmente as IgcHierarchicalGridComponent linhas definindo a rowClasses entrada e definir regras 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;
}
A rowClasses entrada aceita um literal de objeto, contendo pares chave-valor, em que a chave é o nome da classe CSS, enquanto o valor é uma função de retorno de chamada que retorna um valor booleano ou booleano.
public rowClasses = {
    activeRow: (row: IgcRowType) => row.index === 0
}
.activeRow {
    border: 2px solid #fc81b8;
    border-left: 3px solid #e41c77;
}
Demo
Using Row Styles
O IgcHierarchicalGridComponent controle expõe a propriedade que permite o rowStyles estilo condicional das linhas de dados. Semelhante a rowClasses ele, aceita um literal de objeto em que as chaves são propriedades de estilo e os valores são expressões para avaliação. Além disso, você pode aplicar um estilo regular (sem quaisquer condições).
The callback signature for both
rowStylesandrowClassesis:
(row: IgcRowType) => boolean
Vamos definir nossos 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
Visão geral
O IgcHierarchicalGridComponent componente em Ignite UI for Web Components fornece duas maneiras de estilizar condicionalmente de células com base em regras personalizadas.
- Definindo a IgcColumnComponententradacellClassespara um literal de objeto contendo pares de valores-chave. A chave é o nome da classe CSS, enquanto o valor é uma função de retorno de chamada que retorna um valor booleano ou booleano. O resultado é um estilo de material conveniente da célula.
Using Cell Classes
Você pode estilizar condicionalmente as IgcHierarchicalGridComponent células definindo o IgcColumnComponent cellClasses insira e defina regras personalizadas.
<igc-column id="grammyNominations" field="GrammyNominations" data-type="Number"></igc-column>
constructor() {
    var grammyNominations = document.getElementById('grammyNominations') as IgcColumnComponent;
    grammyNominations.cellClasses = this.grammyNominationsCellClassesHandler;
}
A cellClasses entrada aceita um literal de objeto, contendo pares chave-valor, em que a chave é o nome da classe CSS, enquanto o valor é uma função de retorno de chamada que retorna um valor booleano ou 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 a IgcColumnComponententradacellStylesque aceita um literal de objeto em que as chaves são propriedades de estilo e os valores são expressões para avaliação.
A assinatura de retorno de chamada para ambos
cellStylesecellClassesagora é alterada para:
(rowData: any, columnKey: string, cellValue: any, rowIndex: number) => boolean
Using Cell Styles
As colunas expõem a propriedade que permite o cellStyles estilo condicional das células da coluna. Semelhante a cellClasses ele, aceita um literal de objeto em que as chaves são propriedades de estilo e os valores são expressões para avaliação. Além disso, você pode aplicar o estilo regular com facilidade (sem quaisquer condições).
Vamos definir nossos 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
- Se houver células associadas à mesma condição (de colunas diferentes) e uma célula for atualizada, as outras células não serão atualizadas com base no novo valor, se a condição for atendida.
Uma verificação deve ser realizada para aplicar as alterações ao restante das células. O exemplo abaixo mostra como fazer isso.
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
Nossa comunidade é ativa e sempre acolhedora para novas ideias.