Angular Tree Grid Column Pinning
Uma coluna ou várias colunas podem ser fixadas no lado esquerdo ou direito da grade da interface do usuário do Angular. A fixação de coluna no Ignite UI for Angular permite que os usuários finais bloqueiem a coluna em uma ordem de coluna específica, o que permitirá que eles a vejam enquanto rolam horizontalmente a grade da árvore. A Grade da interface do usuário do material tem uma interface de usuário de fixação de coluna integrada, que pode ser usada por meio da barra de ferramentas da grade de árvore para alterar o estado do pino das colunas. Além disso, você pode definir uma interface do usuário personalizada e alterar o estado do pino das colunas por meio da API de fixação de coluna.
Angular Tree Grid Column Pinning Example
Column Pinning API
A fixação da coluna é controlada através da pinned
entrada do igx-column
. As colunas fixadas são renderizadas no lado esquerdo da Grade de árvore por padrão e permanecem fixas por meio da rolagem horizontal das colunas não afixadas no corpo da grade de árvore.
<igx-tree-grid #treeGrid [data]="data" primaryKey="ID" foreignKey="ParentID" [autoGenerate]="false">
<igx-column [field]="Name" [pinned]="true"></igx-column>
<igx-column [field]="Title"></igx-column>
<igx-column [field]="ID"></igx-column>
</igx-tree-grid>
Você também pode usar os Tree Grid's pinColumn
ou unpinColumn
métodos do para fixar ou desafixar colunas pelo nome do IgxTreeGridComponent
campo:
this.treeGrid.pinColumn('Title');
this.treeGrid.unpinColumn('Name');
Ambos os métodos retornam um valor booleano indicando se sua respectiva operação foi bem-sucedida ou não. Normalmente, o motivo pelo qual eles falham é que a coluna já está no estado desejado.
Uma coluna é fixada à direita da coluna fixada mais à direita. A alteração da ordem das colunas fixadas pode ser feita assinando o columnPin
evento e alterando a insertAtIndex
propriedade dos argumentos do evento para o índice de posição desejado.
<igx-tree-grid #treeGrid [data]="data" primaryKey="ID" foreignKey="ParentID" [autoGenerate]="true" (columnPin)="columnPinning($event)"></igx-tree-grid>
public columnPinning(event) {
if (event.column.field === 'Name') {
event.insertAtIndex = 0;
}
}
Pinning Position
Você pode alterar a posição de fixação da coluna por meio da pinning
opção de configuração. Ele permite que você defina a posição das colunas como Início ou Fim. Quando definido como Final, as colunas são renderizadas no final da grade, após as colunas desafixadas. As colunas não afixadas podem ser roladas horizontalmente, enquanto as colunas fixadas permanecem fixas à direita.
<igx-tree-grid #grid1 [data]="data" [autoGenerate]="true" [pinning]="pinningConfig"></igx-tree-grid>
public pinningConfig: IPinningConfig = { columns: ColumnPinningPosition.End };
Demo
Custom Column Pinning UI
Você pode definir sua interface do usuário personalizada e alterar o estado do pino das colunas por meio da API relacionada.
Digamos que, em vez de uma barra de ferramentas, você gostaria de definir ícones de pino nos cabeçalhos de coluna nos quais o usuário final pode clicar para alterar o estado do pino da coluna específica. Isso pode ser feito criando um modelo de cabeçalho para a coluna com um ícone personalizado.
<ng-template igxHeader let-column #pinTemplate>
<div class="title-inner">
<span style="float:left">{{column.header || column.field}}</span>
<igx-icon class="pin-icon" [class.pinned]="column.pinned" [class.unpinned]="!column.pinned" fontSet="fas" name="fa-thumbtack"
(click)="toggleColumn(column)"></igx-icon>
</div>
</ng-template>
<div class="grid__wrapper">
<igx-tree-grid #treeGrid [data]="data" primaryKey="ID" foreignKey="ParentID" [autoGenerate]="false" height="620px"
width="100%">
<igx-column [field]="'Name'" dataType="string" [headerTemplate]="pinTemplate" width="250px"></igx-column>
<igx-column [field]="'Title'" dataType="string" [headerTemplate]="pinTemplate" width="300px"></igx-column>
<igx-column [field]="'ID'" dataType="number" [headerTemplate]="pinTemplate" width="200px"></igx-column>
<igx-column [field]="'HireDate'" header="Hire Date" dataType="date" [headerTemplate]="pinTemplate" width="200px"></igx-column>
<igx-column [field]="'Age'" dataType="number" [headerTemplate]="pinTemplate" width="200px"></igx-column>
<igx-column [field]="'Address'" dataType="string" [headerTemplate]="pinTemplate" width="200px"></igx-column>
<igx-column [field]="'City'" dataType="string" [headerTemplate]="pinTemplate" width="200px"></igx-column>
<igx-column [field]="'Country'" dataType="string" [headerTemplate]="pinTemplate" width="200px"></igx-column>
<igx-column [field]="'Fax'" dataType="string" [headerTemplate]="pinTemplate" width="200px"></igx-column>
<igx-column [field]="'PostalCode'" header="Postal Code" dataType="string" [headerTemplate]="pinTemplate" width="200px"></igx-column>
<igx-column [field]="'Phone'" dataType="string" [headerTemplate]="pinTemplate" width="200px"></igx-column>
</igx-tree-grid>
</div>
Ao clicar no ícone personalizado, o estado do pino da coluna relacionada pode ser alterado usando os métodos de API da coluna.
public toggleColumn(col: ColumnType) {
col.pinned ? col.unpin() : col.pin();
}
Demo
Pinning Limitations
- Definir larguras de coluna em porcentagem (%) explicitamente faz com que o corpo da Grade de Árvore e o conteúdo do cabeçalho fiquem desalinhados quando houver colunas fixadas. Para que a fixação de colunas funcione corretamente, as larguras das colunas devem estar em pixels (px) ou atribuídas automaticamente pela Grade de Árvore.
API References
Additional Resources
- Visão geral da grade de árvore
- Virtualização e desempenho
- Paginação
- Filtragem
- Classificação
- Resumos
- Movimentação de Colunas
- Redimensionamento de colunas
- Escolha