Visão geral e configuração da grade de dados hierárquica
A Grade de Dados Hierárquica Ignite UI for Blazor é usada para exibir e manipular dados tabulares hierárquicos. Vincule rapidamente seus dados com muito pouco código ou use uma variedade de eventos para personalizar diferentes comportamentos. Este componente fornece um rico conjunto de recursos, como seleção de dados, filtragem de estilo do Excel, classificação, paginação, modelagem, movimentação de colunas, fixação de colunas, exportação para Excel e CSV e muito mais. A Grade hierárquica baseia-se no componente de grade plana e estende sua funcionalidade, permitindo que os usuários expandam ou recolham as linhas da grade pai, revelando as grades filhas correspondentes, quando informações mais detalhadas são necessárias.
Blazor Hierarchical Data Grid Example
Neste exemplo de grade Blazor, você pode ver como os usuários podem visualizar conjuntos hierárquicos de dados e usar modelos de célula para adicionar outros componentes visuais.
Getting Started with Ignite UI for Blazor Hierarchical Grid
Dependencies
To get started with the Blazor hierarchical grid, first you need to install the IgniteUI.Blazor package.
Consulte estes tópicos sobre como adicionar o pacote IgniteUI.Blazor:
Você também precisa incluir o seguinte link CSS no arquivo index.html do seu aplicativo para fornecer os estilos necessários para a grade hierárquica:
<link href="_content/IgniteUI.Blazor/themes/grid/light/bootstrap.css" rel="stylesheet" />
Depois, você pode começar a implementar o controle adicionando os seguintes namespaces:
@using IgniteUI.Blazor.Controls
Component Modules
// in Program.cs file
builder.Services.AddIgniteUIBlazor(typeof(IgbhierarchicalGridModule));
Using the Blazor Hierarchical Data Grid
Data Binding
O IgbHierarchicalGrid deriva do IgbGrid e compartilha a maior parte de sua funcionalidade. A principal diferença é que ele permite que vários níveis de hierarquia sejam definidos. Eles são configurados por meio de uma marca separada dentro da definição de IgbHierarchicalGrid, chamada IgbRowIsland. O componente IgbRowIsland define a configuração de cada grade filho para o nível específico. Várias ilhas de linha por nível também são suportadas. A Grade Hierárquica oferece suporte a duas maneiras de associação aos dados:
Using hierarchical data
Se o aplicativo carregar todos os dados hierárquicos como uma matriz de objetos que fazem referência a matrizes filhas de objetos, a Grade Hierárquica poderá ser configurada para lê-los e vinculá-los automaticamente. Aqui está um exemplo de uma fonte de dados hierárquica estruturada corretamente:
public class SingersData : List<SingersDataItem>
{
public SingersData()
{
this.Add(new SingersDataItem()
{
Artist = "Naomí Yepes",
Photo = "assets/images/hgrid/naomi.png",
Debut = "2011",
GrammyNomination = 6,
GrammyAwards = 0,
Tours = new List<ToursItem>() {
new ToursItem() {
Tour = "Faithful Tour",
StartedOn = new DateTime(),
Location = "Worldwide",
Headliner = "NO",
TouredBy = "Naomí Yepes"
}
},
Albums = new List<AlbumItem>() {
new AlbumItem() {
Album = "Dream Driven",
LaunchDate = new DateTime(),
BillboardReview= "81",
Artist = "Naomí Yepes",
Songs = new List<SongItem>() {
new SongItem() {
Number = "1",
Title="Intro",
Released = "*",
Genre = "Rock",
Album ="Dream Driven"
}
}
}
}
});
}
}
Cada IgbRowIsland deve especificar a chave da propriedade que contém os dados filhos.
<IgbHierarchicalGrid Data="SingersData" AutoGenerate="true">
<IgbRowIsland ChildDataKey="Tours" AutoGenerate="true"></IgbRowIsland>
<IgbRowIsland ChildDataKey="Albums"AutoGenerate="true">
<IgbRowIsland ChildDataKey="Songs" AutoGenerate="true"></IgbRowIsland>
</IgbRowIsland>
</IgbHierarchicalGrid>
[!NOTE] Note that instead of
data
the user configures only thechildDataKey
that the IgbHierarchicalGrid needs to read to set the data automatically.
Using Load-On-Demand
A maioria dos aplicativos é projetada para carregar o mínimo de dados possível inicialmente, o que resulta em tempos de carregamento mais rápidos. Nesses casos, IgbHierarchicalGrid pode ser configurado para permitir que serviços criados pelo usuário o alimentem com dados sob demanda.
<IgbHierarchicalGrid Id="hGrid" AutoGenerate="true" PrimaryKey="customerId" Height="600px"
RenderedScript="OnGridRendered">
<IgbRowIsland ChildDataKey="Orders" PrimaryKey="orderId" AutoGenerate="true" GridCreatedScript="OnGridCreated">
<IgbRowIsland ChildDataKey="Details" PrimaryKey="productId" AutoGenerate="true" GridCreatedScript="OnGridCreated"></IgbRowIsland>
</IgbRowIsland>
</IgbHierarchicalGrid>
In JavaScript
igRegisterScript("OnGridRendered", () => {
const grid = document.getElementsByTagName("igc-hierarchical-grid")[0];
grid.isLoading = true;
getData({ parentID: null, rootLevel: true, key: "Customers" }).then(
(data) => {
grid.isLoading = false;
grid.data = data;
grid.markForCheck();
});
}, false)
igRegisterScript("OnGridCreated", (args) => {
const context = args.detail;
const _parentKey = context.owner.childDataKey === "Orders" ? "Customers" : "Orders";
const dataState = {
key: context.owner.childDataKey,
parentID: context.parentID,
parentKey: _parentKey,
rootLevel: false,
};
context.grid.isLoading = true;
getData(dataState).then((data) => {
context.grid.isLoading = false;
context.grid.data = data;
context.grid.markForCheck();
});
}, false)
const DATA_URL = `https://data-northwind.indigo.design/`;
function getData(dataState) {
return fetch(buildUrl(dataState))
.then((result) => result.json());
}
function buildUrl(dataState) {
let qS = "";
if (dataState) {
if (dataState.rootLevel) {
qS += `${dataState.key}`;
} else {
qS += `${dataState.parentKey}/${dataState.parentID}/${dataState.key}`;
}
}
return `${DATA_URL}${qS}`;
}
Hide/Show row expand indicators
Se você tiver uma maneira de fornecer informações se uma linha tem filhos antes de sua expansão, poderá usar a HasChildrenKey
propriedade input. Dessa forma, você pode fornecer uma propriedade booleana dos objetos de dados que indica se um indicador de expansão deve ser exibido.
<IgbHierarchicalGrid Data="data" PrimaryKey="ID" HasChildrenKey="hasChildren">
</IgbHierarchicalGrid>
Observe que a configuração da HasChildrenKey
propriedade não é necessária. Caso você não o forneça, os indicadores de expansão serão exibidos para cada linha.
Além disso, se você deseja mostrar/ocultar o indicador de expandir/recolher todos os cabeçalhos, você pode usar a ShowExpandAll
propriedade. Essa interface do usuário é desabilitada por padrão por motivos de desempenho e não é recomendável habilitá-la em grades com dados grandes ou grades com carga sob demanda.
Características
Os recursos de grade podem ser habilitados e configurados por meio da marcação IgbRowIsland - eles são aplicados a cada grade criada para ele. Alterar as opções em tempo de execução por meio da instância da ilha de linha as altera para cada uma das grades geradas.
<IgbHierarchicalGrid Data="localData" AutoGenerate="false"
AllowFiltering="true" Height="600px" Width="800px">
<IgbColumn Field="ID" Pinned="true" Filterable="true"></IgbColumn>
<IgbColumnGroup Header="Information">
<IgbColumn Field="ChildLevels"></IgbColumn>
<IgbColumn Field="ProductName" HasSummary="true"></IgbColumn>
</IgbColumnGroup>
<IgbRowIsland ChildDataKey="childData" AutoGenerate="false" RowSelection="GridSelectionMode.Multiple">
<IgbColumn Field="ID" HasSummary="true" DataType="number"></IgbColumn>
<IgbColumnGroup Header="Information2">
<IgbColumn Field="ChildLevels"></IgbColumn>
<IgbColumn Field="ProductName"></IgbColumn>
</IgbColumnGroup>
<IgbPaginator PerPage="5"></IgbPaginator>
<IgbRowIsland>
<IgbPaginator></IgbPaginator>
</IgbHierarchicalGrid>
Os seguintes recursos de grade funcionam em um nível por grade, o que significa que cada instância de grade os gerencia independentemente do restante das grades:
- Classificação
- Filtragem
- Paginação
- Cabeçalhos de várias colunas
- Escondendo
- Fixação
- Movente
- Resumos
- Procurar
Os recursos de Seleção e Navegação funcionam globalmente para toda a Grade Hierárquica
- Seleção A seleção não permite que as células selecionadas estejam presentes para duas grades filho diferentes ao mesmo tempo.
- Navegação Ao navegar para cima/para baixo, se o elemento next/prev for uma grade filho, a navegação continuará na grade filho relacionada, marcando a célula relacionada como selecionada e focada. Se a célula filho estiver fora da porta de exibição visível atual, ela será rolada para a exibição para que a célula selecionada esteja sempre visível.
Collapse All Button
A grade hierárquica permite que os usuários recolham convenientemente todas as suas linhas atualmente expandidas pressionando o botão "Recolher tudo" no canto superior esquerdo. Além disso, cada grade filha que contém outras grades e é uma grade hierárquica em si, também possui esse botão - dessa forma, o usuário pode recolher apenas uma determinada grade na hierarquia:

Styling
Além dos temas predefinidos, a grade pode ser personalizada ainda mais definindo algumas das propriedades CSS disponíveis. Caso você queira alterar o plano de fundo do cabeçalho e a cor do texto, você precisa definir uma classe para a grade primeiro:
<IgbHierarchicalGrid Class="grid"></IgbHierarchicalGrid>
Em seguida, defina as--header-background
propriedades e--header-text-color
CSS para essa classe:
.grid {
--header-background: #494949;
--header-text-color: #FFF;
}
Demo
Known Limitations
Limitação | Descrição |
---|---|
Agrupar por | O recurso Agrupar por não é suportado pela grade hierárquica. |
API References
Nossa comunidade é ativa e sempre acolhedora para novas ideias.