Descripción general y configuración de la cuadrícula de árbol de Web Components
La cuadrícula de árbol Ignite UI for Web Components se utiliza para visualizar y manipular datos jerárquicos o planos con facilidad. Vincule rápidamente sus datos con muy poco código o utilice una variedad de eventos para personalizar diferentes comportamientos. Este componente proporciona un amplio conjunto de funciones como selección de datos, filtrado de estilo Excel, ordenación, paginación, creación de plantillas y movimiento de columnas. La visualización de datos tabulares nunca ha sido tan fácil y atractiva gracias a la cuadrícula de árbol de la interfaz de usuario basada en Material Table.
Ejemplo de cuadrícula de árbol de Web Components
En este ejemplo, puede ver cómo los usuarios pueden manipular datos jerárquicos o planos. Hemos incluido opciones de filtrado y clasificación, fijación y ocultación, selección de filas, exportación a Excel y CSV.
<!DOCTYPE html><html><head><title>Sample | Ignite UI | Web Components | infragistics</title><metacharset="UTF-8" /><linkrel="shortcut icon"href="https://static.infragistics.com/xplatform/images/browsers/wc.png" ><linkrel="stylesheet"href="https://fonts.googleapis.com/icon?family=Material+Icons" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Kanit&display=swap" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Titillium Web" /><linkrel="stylesheet"href="https://static.infragistics.com/xplatform/css/samples/shared.v8.css" /><linkrel="stylesheet"href="/src/index.css"type="text/css" /></head><body><divid="root"><divclass="container sample ig-typography"><divclass="container fill"><igc-tree-gridauto-generate="false"name="treeGrid"id="treeGrid"id="treeGrid"child-data-key="Employees"row-selection="multiple"moving="true"allow-filtering="true"filter-mode="excelStyleFilter"><igc-paginator
></igc-paginator><igc-grid-toolbar
><igc-grid-toolbar-titlename="Employees"id="Employees"></igc-grid-toolbar-title><igc-grid-toolbar-actions
><igc-grid-toolbar-hiding
></igc-grid-toolbar-hiding><igc-grid-toolbar-pinning
></igc-grid-toolbar-pinning><igc-grid-toolbar-exporterexport-csv="true"export-excel="true"></igc-grid-toolbar-exporter></igc-grid-toolbar-actions></igc-grid-toolbar><igc-columnfield="Name"header="Name"data-type="string"sortable="true"editable="true"resizable="true"has-summary="true"></igc-column><igc-columnfield="HireDate"header="Hire Date"data-type="date"sortable="true"editable="true"resizable="true"></igc-column><igc-columnfield="Age"header="Age"data-type="number"sortable="true"editable="true"resizable="true"></igc-column></igc-tree-grid></div></div></div><!-- This script is needed only for parcel and it will be excluded for webpack -->
<% if (false) { %><scriptsrc="src/index.ts"></script><% } %>
</body></html>html
/* shared styles are loaded from: *//* https://static.infragistics.com/xplatform/css/samples */css
¿Te gusta esta muestra? Obtenga acceso a nuestro kit de herramientas de Ignite UI for Web Components completo y comience a crear sus propias aplicaciones en minutos. Descárgalo gratis.
Primeros pasos con Ignite UI for Web Components cuadrícula de árboles
dependencias
Para comenzar con la cuadrícula de árbol Web Components, primero debe instalar el igniteui-webcomponents-grids paquete.
También se debe hacer referencia a los estilos correspondientes. Puede elegir la opción clara u oscura para uno de los temas y, según la configuración de su proyecto, importarlo:
Para obtener más detalles sobre cómo personalizar la apariencia de la cuadrícula de árbol, puede consultar la sección de estilo.
Uso
La cuadrícula de árbol comparte muchas características con la cuadrícula, pero también agrega la capacidad de mostrar sus datos jerárquicamente. Para lograr esto, la cuadrícula de árbol nos proporciona un par de formas de definir las relaciones entre nuestros objetos de datos: usando una colección secundaria para cada objeto de datos o usando claves primarias y externas para cada objeto de datos.
Células de árbol
Independientemente de qué opción se utilice para construir la jerarquía de la cuadrícula de árbol (colección secundaria o claves primarias y externas), las filas de la cuadrícula de árbol se construyen con dos tipos de celdas:
GridCell: celda ordinaria que contiene un valor.
TreeGridCell: celda de árbol que contiene un valor, un indicador de expansión/contraer y un elemento div de sangría, que se basa en el nivel de la fila de la celda. Se puede acceder al nivel de un componente de fila a través de la propiedad de level de su treeRow interno.
Cada fila puede tener solo una celda de árbol, pero puede tener múltiples (o ninguna) celdas ordinarias.
Profundidad de expansión inicial
Inicialmente, la cuadrícula de árbol expandirá todos los niveles de nodo y los mostrará. Este comportamiento se puede configurar mediante la ExpansionDepth propiedad. De forma predeterminada, su valor es Infinity, lo que significa que se expandirán todos los niveles de nodo. Puede controlar la profundidad de expansión inicial estableciendo esta propiedad en un valor numérico. Por ejemplo, 0 mostrará solo los nodos de nivel raíz,1 mostrará los nodos de nivel raíz y sus nodos secundarios, y así sucesivamente.
Colección infantil
Cuando usamos la opción de colección secundaria, cada objeto de datos contiene una colección secundaria, que se rellena con elementos del mismo tipo que el objeto de datos principal. De esta manera, cada registro en la cuadrícula de árbol tendrá una referencia directa a cualquiera de sus hijos. En este caso, la propiedad de datos de nuestra cuadrícula de árbol que contiene la fuente de datos original será una colección definida jerárquicamente.
Para este ejemplo, usemos la siguiente estructura de colección:
constructor() {
var treeGrid = document.getElementById('treeGrid') as IgcTreeGridComponent;
treeGrid.childDataKey = "Employees";
treeGrid.data = this.employeesNestedData;
}
ts
Para que la cuadrícula de árbol construya la jerarquía, tendremos que establecer su ChildDataKey propiedad en el nombre de la colección secundaria que se usa en cada uno de nuestros objetos de datos. En nuestro caso será la colección Empleados. Además, podemos desactivar la generación automática de columnas y definirlas manualmente haciéndolas coincidir con las propiedades reales de nuestros objetos de datos. (La colección Employees se usará automáticamente para la jerarquía, por lo que no es necesario incluirla en las definiciones de las columnas).
Ahora podemos habilitar las funciones de selección de filas y paginación de la cuadrícula de árbol utilizando las propiedades rowSelection y de paging. También podemos habilitar las funciones de resúmenes, filtrado, clasificación, edición, movimiento y cambio de tamaño para cada una de nuestras columnas.
Puede ver el resultado del código de arriba al principio de este artículo en la sección Ejemplo de cuadrícula de árbol.
Claves primarias y externas
Cuando utilizamos la opción de claves primarias y externas, cada objeto de datos contiene una clave primaria y una clave externa. La clave principal es el identificador único del objeto de datos actual y la clave externa es el identificador único de su objeto principal. En este caso, la propiedad data de nuestra cuadrícula de árbol que contiene la fuente de datos original será una colección plana.
En los datos de ejemplo anteriores, todos los registros tienen un ID, un ParentID y algunas propiedades adicionales como Name, JobTitle y Age. Como se mencionó anteriormente, el ID de los registros debe ser único ya que será nuestro PrimaryKey. El ParentID contiene el ID del nodo primario y podría establecerse como un ForeignKey. Si una fila tiene un ParentID que no coincide con ninguna fila de la cuadrícula de árbol, significa que esta fila es una fila raíz.
La relación padre-hijo se configura mediante las propiedades y ForeignKey de la cuadrícula de PrimaryKey árbol.
Aquí está la plantilla del componente que demuestra cómo configurar la cuadrícula de árbol para mostrar los datos definidos en la colección plana anterior:
Además, habilitaremos la función de selección de filas de la cuadrícula de árbol mediante el uso de la propiedad rowSelection y también las funciones de filtrado, ordenación, edición, movimiento y cambio de tamaño para cada una de nuestras columnas.
<!DOCTYPE html><html><head><title>Sample | Ignite UI | Web Components | infragistics</title><metacharset="UTF-8" /><linkrel="shortcut icon"href="https://static.infragistics.com/xplatform/images/browsers/wc.png" ><linkrel="stylesheet"href="https://fonts.googleapis.com/icon?family=Material+Icons" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Kanit&display=swap" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Titillium Web" /><linkrel="stylesheet"href="https://static.infragistics.com/xplatform/css/samples/shared.v8.css" /><linkrel="stylesheet"href="/src/index.css"type="text/css" /></head><body><divid="root"><divclass="container sample ig-typography"><divclass="container fill"><igc-tree-gridauto-generate="false"name="treeGrid"id="treeGrid"id="treeGrid"primary-key="ID"foreign-key="ParentID"allow-filtering="true"moving="true"row-selection="multiple"><igc-columnfield="Name"data-type="string"sortable="true"editable="true"resizable="true"></igc-column><igc-columnfield="Title"header="Job Title"data-type="string"sortable="true"editable="true"resizable="true"></igc-column><igc-columnfield="Age"data-type="number"sortable="true"editable="true"resizable="true"></igc-column></igc-tree-grid></div></div></div><!-- This script is needed only for parcel and it will be excluded for webpack -->
<% if (false) { %><scriptsrc="src/index.ts"></script><% } %>
</body></html>html
/* shared styles are loaded from: *//* https://static.infragistics.com/xplatform/css/samples */css
Persistencia e Integración
La sangría de la celda de la cuadrícula de árbol persiste en otras entidades de cuadrícula de árbol, como el filtrado, la ordenación y la paginación.
Cuando Sorting se aplica en una columna, las filas de datos se ordenan por niveles. Esto significa que las filas de nivel raíz se ordenarán independientemente de sus respectivos elementos secundarios. Sus respectivas colecciones secundarias también se ordenarán de forma independiente, y así sucesivamente.
La primera columna (la que tiene un VisibleIndex de 0) es siempre la columna del árbol.
La columna que termina con un VisibleIndex de 0 después de operaciones como la fijación de columnas, la ocultación de columnas y el movimiento de columnas se convierte en la columna de árbol.
Las hojas de cálculo de Excel exportadas reflejan la jerarquía agrupando los registros tal como están agrupados en la propia cuadrícula de árbol. Todos los estados expandidos de los registros también se conservarán y reflejarán.
Al exportar a CSV, los niveles y los estados expandidos se ignoran y todos los datos se exportan como planos.
Configuración de estilo de cuadrícula de árbol de Web Components
Además de los temas predefinidos, la cuadrícula se puede personalizar aún más configurando algunas de las propiedades CSS disponibles. En caso de que desee cambiar algunos de los colores, primero debe establecer una clase para la cuadrícula:
<igc-tree-grid class="tree-grid">
ts
Luego configure las propiedades CSS relacionadas para esa clase:
<!DOCTYPE html><html><head><title>Sample | Ignite UI | Web Components | infragistics</title><metacharset="UTF-8" /><linkrel="shortcut icon"href="https://static.infragistics.com/xplatform/images/browsers/wc.png" ><linkrel="stylesheet"href="https://fonts.googleapis.com/icon?family=Material+Icons" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Kanit&display=swap" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Titillium Web" /><linkrel="stylesheet"href="https://static.infragistics.com/xplatform/css/samples/shared.v8.css" /><linkrel="stylesheet"href="/src/index.css"type="text/css" /></head><body><divid="root"><divclass="container sample ig-typography"><divclass="container fill"><igc-tree-gridauto-generate="false"name="treeGrid"id="treeGrid"id="treeGrid"child-data-key="Employees"><igc-columnfield="Name"header="Name"data-type="string"></igc-column><igc-columnfield="HireDate"header="Hire Date"data-type="date"></igc-column><igc-columnfield="Age"header="Age"data-type="number"></igc-column><igc-columnfield="salary"header="Salary"data-type="number"></igc-column><igc-columnfield="productivity"header="Productivity"data-type="number"></igc-column></igc-tree-grid></div></div></div><!-- This script is needed only for parcel and it will be excluded for webpack -->
<% if (false) { %><scriptsrc="src/index.ts"></script><% } %>
</body></html>html