Angular Layout de várias linhas
O layout de várias linhas estende os recursos de renderização do igxGridComponent
. O recurso permite dividir um único registro de dados em várias linhas visíveis.
Angular Multi-row Layout Example
A declaração de Layout de várias linhas é obtida por meio igx-column-layout
do componente. Cada igx-column-layout
componente deve ser considerado como um bloco, contendo um ou vários igx-column
componentes. Alguns dos recursos da grade funcionam no nível do bloco (eles estão listados na seção "Integração de recursos" abaixo). Por exemplo, a virtualização usará o bloco para determinar as partes virtuais, portanto, para melhor desempenho, divida as colunas em mais igx-column-layout
blocos, se o layout permitir. Não deve haver colunas fora desses blocos e nenhum uso de IgxColumnGroupComponent
ao configurar um layout de várias linhas. O layout de várias linhas é implementado sobre a especificação do layout da grade e deve estar em conformidade com seus requisitos.
IgxColumnComponent
Expõe quatro @Input
propriedades para determinar a localização e a extensão de cada célula:
colStart
- índice da coluna a partir do qual o campo está começando. Esta propriedade é obrigatória.rowStart
- índice da linha a partir do qual o campo está começando. Esta propriedade é obrigatória.colEnd
- índice da coluna onde o campo atual deve terminar. A quantidade de colunas entre colStart e colEnd determinará a quantidade de colunas de abrangência para esse campo. Essa propriedade é opcional. Se não for definido, o padrão paracolStart + 1
.rowEnd
- índice da linha onde o campo atual deve terminar. A quantidade de linhas entre rowStart e rowEnd determinará a quantidade de linhas de abrangência para esse campo. Essa propriedade é opcional. Se não for definido, o padrão pararowStart + 1
.
<igx-column-layout>
<igx-column [rowStart]="1" [colStart]="1" [rowEnd]="3" field="ID"></igx-column>
</igx-column-layout>
<igx-column-layout>
<igx-column [rowStart]="1" [colStart]="1" [colEnd]="3" field="CompanyName"></igx-column>
<igx-column [rowStart]="2" [colStart]="1" [colEnd]="2" field="ContactName"></igx-column>
<igx-column [rowStart]="2" [colStart]="2" [colEnd]="3" field="ContactTitle"></igx-column>
</igx-column-layout>
<igx-column-layout>
<igx-column [rowStart]="1" [colStart]="1" [colEnd]="3" field="Country"></igx-column>
<igx-column [rowStart]="1" [colStart]="3" [colEnd]="5" field="Region"></igx-column>
<igx-column [rowStart]="1" [colStart]="5" [colEnd]="7" field="PostalCode"></igx-column>
<igx-column [rowStart]="2" [colStart]="1" [colEnd]="4" field="City"></igx-column>
<igx-column [rowStart]="2" [colStart]="4" [colEnd]="7" field="Address"></igx-column>
</igx-column-layout>
<igx-column-layout>
<igx-column [rowStart]="1" [colStart]="1" field="Phone"></igx-column>
<igx-column [rowStart]="2" [colStart]="1" field="Fax"></igx-column>
</igx-column-layout>
O resultado da configuração acima pode ser visto na captura de tela abaixo:

Note
rowStart
e colStart
as propriedades devem ser definidas para cada igx-column
into igx-column-layout
. O igxColumnLayout
componente não está verificando se o layout está correto e não está lançando erros ou avisos sobre isso. Os desenvolvedores devem certificar-se de que a declaração de seu layout esteja correta e completa, caso contrário, eles podem acabar em layout quebrado com desalinhamentos, sobreposições e inconsistências do navegador.
Feature Integration
Devido à abordagem de renderização completamente diferente do Layout de várias linhas, alguns dos recursos de coluna funcionarão apenas no igx-column-layout
componente. Esses recursos são Fixação de Coluna e Ocultação de Coluna. Outros como - Ordenação e agrupamento funcionarão da mesma maneira - no igx-column
componente.
- Filtragem - somente a Filtragem de Estilo do Excel é suportada. Definir
filterMode
explicitamente comoFilterMode.quickFilter
não tem efeito. - Paginação - funciona em registros, não em linhas visuais.
- A opção Agrupar por
hideGroupedColumns
não tem efeito no Layout de várias linhas. As colunas agrupadas estão sempre visíveis.
No momento, não há suporte para os seguintes recursos:
- Movimentação de Colunas
- Cabeçalhos de várias colunas
- Exportar para Excel
- Resumos
Keyboard Navigation
IgxGridComponent com layouts de várias linhas fornece navegação de teclado integrada.
Horizontal navigation
- Arrow Left Ou Arrow Right- Mova para a célula adjacente à esquerda/direita dentro da linha atual não afetada pelos layouts de coluna definidos. Se a célula atual se estende por mais de uma linha Arrow Left e Arrow Right deve navegar para a primeira célula à esquerda e à direita com o mesmo
rowStart
, a menos que você tenha navegado para alguma outra célula adjacente antes. A navegação armazena a célula de navegação inicial e navega para as células com a mesmarowStart
, se possível. - Ctrl + Arrow Left (HOME) ou Ctrl + Arrow Right (END) - navegue até o início ou o fim da linha e selecione a célula de acordo com a célula de navegação inicial.
Vertical navigation
- Arrow Up ou Arrow Down- mova-se para a célula acima/abaixo em relação a uma posição inicial e não seja afetada pelas linhas. Se a célula atual se estender por mais de uma coluna, a próxima célula ativa será selecionada de acordo com a célula de navegação inicial.
- Ctrl + Seta para cima ou Ctrl + Down- Navegue e aplique o foco na mesma coluna na primeira ou na última linha.
- Ctrl + Home ou Ctrl + End- Navegue até a primeira linha e foque a primeira célula ou navegue até a última linha e foque a última célula.
Note
A navegação pelas células que se estendem por várias linhas ou colunas é feita de acordo com a célula de navegação inicial e permitirá retornar à célula inicial usando a chave na direção oposta. A mesma abordagem é usada ao navegar pelas linhas do grupo.
Note
A seleção e a seleção de várias células estão funcionando no layout, o que significa que quando uma célula estiver ativa, seu layout será selecionado. Além disso, todos os recursos de seleção múltipla, como seleção de arrasto, são aplicáveis e funcionarão por layout, não por célula.
Custom Keyboard Navigation
A grade permite personalizar o comportamento de navegação padrão quando uma determinada tecla é pressionada. Ações como going to the next cell
ou cell below
podem ser tratadas facilmente com a poderosa API de navegação por teclado:
gridKeydown
está exposto. O evento será emitidoIGridKeydownEventArgs
. Este evento está disponível apenas através das combinações de teclas do teclado mencionadas acima, para todas as outras ações de tecla que você pode usarkeydown
evento(keydown)="onKeydown($event)"
navigateTo
- Este método permite que você navegue para uma posição com base no fornecidorowindex
evisibleColumnIndex
A demonstração abaixo adiciona navegação adicional para baixo/para cima por meio das Enter teclas e Shift + Enter, semelhante ao comportamento observado no Excel.
Demo
Layout Configurator
Às vezes, ao configurar um layout de coluna, pode ser um desafio calcular e definir o colStart
e colEnd
ou rowStart
e rowEnd
. Especialmente quando há muitas colunas em um único layout. É por isso que criamos um pequeno configurador, para que você possa fazer isso facilmente e ter uma visualização semelhante de como ficaria dentro do igxGrid quando aplicado. Você pode fazer as seguintes interações com ele:
- Defina o número de linhas para toda a configuração. Todos os layouts devem ter a mesma quantidade de linhas.
- Adicione/remova layouts de coluna clicando no chip ou reordenando-os arrastando um chip de layout para a
Add Layout
esquerda/direita. - Defina configurações específicas para cada layout como número de colunas e a largura delas. A configuração refere-se ao layout selecionado no momento.
- Redimensione as células da coluna na visualização do layout para que elas possam abranger mais colunas/linhas ou limpá-las usando o
Delete
botão. - Defina colunas na visualização arrastando um chip de coluna no local desejado.
- Adicionar/remover novas colunas usando o
Add Column
chip. - Obtenha a saída do modelo de toda a configuração pronta para ser colocada dentro de um igxGrid ou da representação JSON que também pode ser usada e analisada em seu modelo usando
NgForOf
, por exemplo.
Por padrão, definimos as mesmas colunas que nosso exemplo anterior, mas ele pode ser limpo e configurado para corresponder à configuração desejada.
Estilização
O igxGrid permite estilizar através do Ignite UI for Angular Theme Library
. O grid-theme
expõe uma grande variedade de propriedades, que permitem a personalização de todos os recursos da grade.
Nas etapas abaixo, estamos passando pelas etapas de personalização do estilo de layout de várias linhas da grade.
Importing global theme
Para iniciar a personalização do recurso Layout de várias linhas, você precisa importar o index
arquivo, onde todas as funções de estilo e mixins estão localizados.
@use "igniteui-angular/theming" as *;
// IMPORTANT: Prior to Ignite UI for Angular version 13 use:
// @import '~igniteui-angular/lib/core/styles/themes/index';
Defining custom theme
Em seguida, crie um novo tema, que estenda o grid-theme
e aceite os parâmetros, necessários para personalizar o layout do recurso conforme desejado.
$custom-theme: grid-theme(
$cell-active-border-color: #ffcd0f,
$cell-selected-background: #6f6f6f,
$row-hover-background: #fde069,
$row-selected-background: #8d8d8d,
$header-background: #494949,
$header-text-color: #fff,
$sorted-header-icon-color: #ffcd0f,
$sortable-header-icon-hover-color: #e9bd0d
);
Note
Em vez de codificar os valores de cor como acabamos de fazer, podemos obter maior flexibilidade em termos de cores usando as palette
funções e color
. Consulte o Palettes
tópico para obter orientações detalhadas sobre como usá-los.
Applying the custom theme
A maneira mais fácil de aplicar seu tema é com uma sass
@include
instrução no arquivo de estilos globais:
@include css-vars($custom-theme);
Para que o tema personalizado afete apenas um componente específico, você pode mover todos os estilos que acabou de definir do arquivo de estilos globais para o arquivo de estilo do componente personalizado (incluindo a index
importação do arquivo).
Dessa forma, devido ao ViewEncapsulation do Angular, seus estilos serão aplicados somente ao seu componente personalizado.
Demo
Note
A amostra não será afetada Change Theme
pelo tema global selecionado.
API References
- Componente IgxGridIgx
- Estilos IgxGridComponent
- Componente IgxColumnLayoutComponent
- IgxColumnComponent
Additional Resources
- Visão geral da grade
- Virtualização e desempenho
- Paginação
- Classificação
- Redimensionamento de colunas
- Escolha