Web Components Hierarchical Grid 複数列ヘッダーの概要
Web Components Hierarchical Grid の Ignite UI for Web Components 複数列ヘッダー機能は、共通の複数ヘッダーの下に配置することで列をグループ化できます。IgcHierarchicalGridComponent
の各複数ヘッダー グループは、その他のグループや列を組み合わせて表示できます。この機能は、水平方向のスクロールが面倒な大規模なデータセットを扱う場合に特に役立ちます。
Web Components Hierarchical Grid 複数列ヘッダーの例
import { IgcPropertyEditorPanelModule } from 'igniteui-webcomponents-layouts';
import 'igniteui-webcomponents-grids/grids/combined';
import { ComponentRenderer, WebHierarchicalGridDescriptionModule, WebColumnGroupDescriptionModule, PropertyEditorPanelDescriptionModule } from 'igniteui-webcomponents-core';
import { IgcPropertyEditorPanelComponent, IgcPropertyEditorPropertyDescriptionComponent } from 'igniteui-webcomponents-layouts';
import { IgcHierarchicalGridComponent } from 'igniteui-webcomponents-grids/grids';
import HierarchicalCustomers from './HierarchicalCustomers.json';
import { IgcPropertyEditorPropertyDescriptionButtonClickEventArgs } from 'igniteui-webcomponents-layouts';
import "igniteui-webcomponents-grids/grids/themes/light/bootstrap.css";
import 'igniteui-webcomponents/themes/light/bootstrap.css';
import { defineAllComponents } from 'igniteui-webcomponents';
import { ModuleManager } from 'igniteui-webcomponents-core';
defineAllComponents();
import "./index.css";
ModuleManager.register(
IgcPropertyEditorPanelModule
);
export class Sample {
private propertyEditor: IgcPropertyEditorPanelComponent
private propertyEditorPropertyDescription1: IgcPropertyEditorPropertyDescriptionComponent
private propertyEditorPropertyDescription2: IgcPropertyEditorPropertyDescriptionComponent
private hierarchicalGrid: IgcHierarchicalGridComponent
private _bind: () => void;
constructor() {
var propertyEditor = this.propertyEditor = document.getElementById('PropertyEditor') as IgcPropertyEditorPanelComponent;
var propertyEditorPropertyDescription1 = this.propertyEditorPropertyDescription1 = document.getElementById('propertyEditorPropertyDescription1') as IgcPropertyEditorPropertyDescriptionComponent;
this.webHierarchicalGridPinFirstGroupToggle = this.webHierarchicalGridPinFirstGroupToggle.bind(this);
var propertyEditorPropertyDescription2 = this.propertyEditorPropertyDescription2 = document.getElementById('propertyEditorPropertyDescription2') as IgcPropertyEditorPropertyDescriptionComponent;
this.webHierarchicalGridHideFirstGroupToggle = this.webHierarchicalGridHideFirstGroupToggle.bind(this);
var hierarchicalGrid = this.hierarchicalGrid = document.getElementById('hierarchicalGrid') as IgcHierarchicalGridComponent;
this._bind = () => {
propertyEditor.componentRenderer = this.renderer;
propertyEditor.target = this.hierarchicalGrid;
propertyEditorPropertyDescription1.buttonClicked = this.webHierarchicalGridPinFirstGroupToggle;
propertyEditorPropertyDescription2.buttonClicked = this.webHierarchicalGridHideFirstGroupToggle;
hierarchicalGrid.data = this.hierarchicalCustomers;
}
this._bind();
}
private _hierarchicalCustomers: any[] = HierarchicalCustomers;
public get hierarchicalCustomers(): any[] {
return this._hierarchicalCustomers;
}
private _componentRenderer: ComponentRenderer = null;
public get renderer(): ComponentRenderer {
if (this._componentRenderer == null) {
this._componentRenderer = new ComponentRenderer();
var context = this._componentRenderer.context;
WebHierarchicalGridDescriptionModule.register(context);
WebColumnGroupDescriptionModule.register(context);
PropertyEditorPanelDescriptionModule.register(context);
}
return this._componentRenderer;
}
public webHierarchicalGridPinFirstGroupToggle(sender: any, args: IgcPropertyEditorPropertyDescriptionButtonClickEventArgs): void {
const hgrid: IgcHierarchicalGridComponent = this.hierarchicalGrid;
const firstColumnGroup = hgrid.getColumnByName("Company").parent;
firstColumnGroup.pinned = !firstColumnGroup.pinned;
hgrid.markForCheck();
}
public webHierarchicalGridHideFirstGroupToggle(sender: any, args: IgcPropertyEditorPropertyDescriptionButtonClickEventArgs): void {
const hgrid: IgcHierarchicalGridComponent = this.hierarchicalGrid;
const firstColumnGroup = hgrid.getColumnByName("Company").parent;
firstColumnGroup.hidden = !firstColumnGroup.hidden;
hgrid.markForCheck();
}
}
new Sample();
ts<!DOCTYPE html>
<html>
<head>
<title>Sample | Ignite UI | Web Components | infragistics</title>
<meta charset="UTF-8" />
<link rel="shortcut icon" href="https://static.infragistics.com/xplatform/images/browsers/wc.png" >
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Kanit&display=swap" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Titillium Web" />
<link rel="stylesheet" href="https://static.infragistics.com/xplatform/css/samples/shared.v8.css" />
<link rel="stylesheet" href="/src/index.css" type="text/css" />
</head>
<body>
<div id="root">
<div class="container sample ig-typography">
<div class="options vertical">
<igc-property-editor-panel
name="PropertyEditor"
id="PropertyEditor"
description-type="WebGrid"
is-horizontal="true"
is-wrapping-enabled="true">
<igc-property-editor-property-description
value-type="Button"
primitive-value="Pin First Group"
name="propertyEditorPropertyDescription1"
id="propertyEditorPropertyDescription1">
</igc-property-editor-property-description>
<igc-property-editor-property-description
value-type="Button"
primitive-value="Hide First Group"
name="propertyEditorPropertyDescription2"
id="propertyEditorPropertyDescription2">
</igc-property-editor-property-description>
</igc-property-editor-panel>
</div>
<div class="container fill">
<igc-hierarchical-grid
auto-generate="false"
name="hierarchicalGrid"
id="hierarchicalGrid"
id="hierarchicalGrid"
primary-key="CustomerID"
moving="true"
allow-filtering="true">
<igc-column
field="CustomerID"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column-group
header="General Information">
<igc-column
field="Company"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column-group
header="Personal Details">
<igc-column
field="ContactName"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="ContactTitle"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
</igc-column-group>
</igc-column-group>
<igc-column-group
header="Address Information">
<igc-column-group
header="Location">
<igc-column
field="Address"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="City"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="PostalCode"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="Country"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
</igc-column-group>
<igc-column-group
header="Contact Information">
<igc-column
field="Phone"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="Fax"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
</igc-column-group>
</igc-column-group>
<igc-row-island
child-data-key="Orders"
auto-generate="false">
<igc-column-group
header="Order Information">
<igc-column-group
header="Order Details">
<igc-column
field="OrderID"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="EmployeeID"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="OrderDate"
data-type="date"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="RequiredDate"
data-type="date"
sortable="true"
resizable="true">
</igc-column>
</igc-column-group>
<igc-column-group
header="General Shipping Information">
<igc-column
field="ShipDate"
data-type="date"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="ShipVia"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="Freight"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="ShipName"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
</igc-column-group>
<igc-column-group
header="Shipping Locations">
<igc-column
field="ShipAddress"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="ShipCity"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="ShipPostalCode"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="ShipCountry"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
</igc-column-group>
</igc-column-group>
<igc-row-island
child-data-key="OrderDetails"
auto-generate="false">
<igc-column
field="ProductID"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="UnitPrice"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="Quantity"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="Discount"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
</igc-row-island>
</igc-row-island>
</igc-hierarchical-grid>
</div>
</div>
</div>
<!-- This script is needed only for parcel and it will be excluded for webpack -->
<% if (false) { %><script src="src/index.ts"></script><% } %>
</body>
</html>
html/* shared styles are loaded from: */
/* https://static.infragistics.com/xplatform/css/samples */
css
このサンプルが気に入りましたか? 完全な Ignite UI for Web Componentsツールキットにアクセスして、すばやく独自のアプリの作成を開始します。無料でダウンロードできます。
複数列ヘッダーの宣言は、一連の列を IgcColumnGroupComponent
コンポーネントにラップし、IgcHeaderComponent
タイトル情報を渡すことによって実現されます。
<igc-hierarchical-grid auto-generate="false" name="hierarchicalGrid" id="hierarchicalGrid" primary-key="ID" moving="true" allow-filtering="true">
<igc-column field="CustomerID" sortable="true" resizable="true"> </igc-column>
<igc-column-group header="Address Information">
<igc-column-group header="Location">
<igc-column field="Address" sortable="true" resizable="true"></igc-column>
<igc-column field="City" sortable="true" resizable="true"></igc-column>
<igc-column field="PostalCode" sortable="true" resizable="true"></igc-column>
<igc-column field="Country" sortable="true" resizable="true"></igc-column>
</igc-column-group>
<igc-column-group header="Contact Information">
<igc-column field="Phone" sortable="true" resizable="true"></igc-column>
<igc-column field="Fax" sortable="true" resizable="true"></igc-column>
</igc-column-group>
</igc-column-group>
</igc-hierarchical-grid>
html
ネストしたヘッダーの n-th
レベルは、上記の宣言に従います。したがって、IgcColumnGroupComponent
をネストすることで、望ましい結果が得られます。
<igc-hierarchical-grid auto-generate="false" name="hierarchicalGrid" id="hierarchicalGrid" primary-key="ID" moving="true" allow-filtering="true">
<igc-column field="CustomerID" dataType="string" sortable="true" resizable="true"> </igc-column>
<igc-column-group header="General Information">
<igc-column field="CompanyName" dataType="string" sortable="true" resizable="true"></igc-column>
<igc-column-group header="Person Details">
<igc-column field="ContactName" dataType="string" sortable="true" resizable="true"></igc-column>
<igc-column field="ContactTitle" dataType="string" sortable="true" resizable="true"></igc-column>
</igc-column-group>
</igc-column-group>
</igc-hierarchical-grid>
html
すべての IgcColumnGroupComponent
は、移動、ピン固定、および非表示をサポートしています。
列セットと列グループがある場合、ピン固定は列の一番上の親レベルでのみ可能です。具体的には、ネストされた column groups または columns ごとのピン固定は許可されていません。 columns と column groups 間の移動は、それらが階層内の同じレベルにあり、両方が同じ group にある場合にのみ許可されます。 columns/column-groups が現在の group によってラップされていない場合 (一番上のレベル columns の場合)、表示されている列全体の間で移動が許可されます。
<igc-hierarchical-grid auto-generate="false" name="hierarchicalGrid" id="hierarchicalGrid" primary-key="ID" moving="true" allow-filtering="true">
<igc-column field="CustomerID" dataType="string" movable="true" pinned="true" sortable="true" resizable="true"> </igc-column>
<igc-column-group movable="true" pinned="true" header="General Information">
<igc-column field="CompanyName" dataType="string" sortable="true" resizable="true"></igc-column>
<igc-column-group header="Person Details">
<igc-column field="ContactName" dataType="string" sortable="true" resizable="true"></igc-column>
<igc-column field="ContactTitle" dataType="string" sortable="true" resizable="true"></igc-column>
</igc-column-group>
</igc-column-group>
</igc-hierarchical-grid>
html
複数列ヘッダー テンプレート
グリッドの各列グループは個別のテンプレートを持つことができます。次のコード スニペットは、列グループの HeaderTemplate
の使用方法を示しています:
<igc-column-group id="addressInfo" header="Address Information">
</igc-column-group>
html
constructor() {
var addresss = this.addresss = document.getElementById('addressInfo') as IgcColumnGroupComponent;
addresss.headerTemplate = this.columnGroupHeaderTemplate;
}
public columnGroupHeaderTemplate = (ctx: IgcColumnTemplateContext) => {
return html`
${ctx.column.header.toUpperCase()}
`;
}
ts
複数の列グループに対して 1 つのテンプレートを再利用する場合は、列グループの HeaderTemplate
プロパティを次のように設定できます:
<igc-column-group id="generalInfo" header="General Information">
</igc-column-group>
<igc-column-group id="addressInfo" header="Address Information">
</igc-column-group>
html
constructor() {
var general = this.general = document.getElementById('generalInfo') as IgcColumnGroupComponent;
var addresss = this.address = document.getElementById('addressInfo') as IgcColumnGroupComponent;
general.headerTemplate = this.columnGroupHeaderTemplate;
addresss.headerTemplate = this.columnGroupHeaderTemplate;
}
public columnGroupHeaderTemplate = (ctx: IgcColumnTemplateContext) => {
return html`
${ctx.column.header.toUpperCase()}
`;
}
ts
ヘッダーが再テンプレート化され、対応する列グループが移動可能な場合は、テンプレート要素で draggable 属性を false に設定する必要があり、これにより適用されるイベントをすべて処理できます。
public columnHeaderTemplate = (ctx: IgcColumnTemplateContext) => {
return html`
<igc-icon draggable="false" @click="${() => this.onClick()}"></igc-icon>
`;
}
ts
次のサンプルは、ヘッダー テンプレートを使用して折りたたみ可能な列グループを実装する方法を示しています。
import 'igniteui-webcomponents-grids/grids/combined';
import { ComponentRenderer, WebHierarchicalGridDescriptionModule, WebColumnGroupDescriptionModule } from 'igniteui-webcomponents-core';
import { IgcHierarchicalGridComponent, IgcColumnGroupComponent } from 'igniteui-webcomponents-grids/grids';
import HierarchicalCustomers from './HierarchicalCustomers.json';
import { IgcGridComponent, IgcColumnTemplateContext, IgcColumnComponent } from 'igniteui-webcomponents-grids/grids';
import { html, nothing } from 'lit-html';
import "igniteui-webcomponents-grids/grids/themes/light/bootstrap.css";
import "./index.css";
export class Sample {
private hierarchicalGrid: IgcHierarchicalGridComponent
private columnGroup1: IgcColumnGroupComponent
private columnGroup2: IgcColumnGroupComponent
private columnGroup3: IgcColumnGroupComponent
private columnGroup4: IgcColumnGroupComponent
private columnGroup5: IgcColumnGroupComponent
private _bind: () => void;
constructor() {
var hierarchicalGrid = this.hierarchicalGrid = document.getElementById('hierarchicalGrid') as IgcHierarchicalGridComponent;
var columnGroup1 = this.columnGroup1 = document.getElementById('columnGroup1') as IgcColumnGroupComponent;
var columnGroup2 = this.columnGroup2 = document.getElementById('columnGroup2') as IgcColumnGroupComponent;
var columnGroup3 = this.columnGroup3 = document.getElementById('columnGroup3') as IgcColumnGroupComponent;
var columnGroup4 = this.columnGroup4 = document.getElementById('columnGroup4') as IgcColumnGroupComponent;
var columnGroup5 = this.columnGroup5 = document.getElementById('columnGroup5') as IgcColumnGroupComponent;
this._bind = () => {
hierarchicalGrid.data = this.hierarchicalCustomers;
columnGroup1.headerTemplate = this.webHierarchicalGridColumnGroupHeaderTemplate;
columnGroup2.headerTemplate = this.webHierarchicalGridColumnGroupHeaderTemplate;
columnGroup3.headerTemplate = this.webHierarchicalGridColumnGroupHeaderTemplate;
columnGroup4.headerTemplate = this.webHierarchicalGridColumnGroupHeaderTemplate;
columnGroup5.headerTemplate = this.webHierarchicalGridColumnGroupHeaderTemplate;
}
this._bind();
}
private _hierarchicalCustomers: any[] = HierarchicalCustomers;
public get hierarchicalCustomers(): any[] {
return this._hierarchicalCustomers;
}
private _componentRenderer: ComponentRenderer = null;
public get renderer(): ComponentRenderer {
if (this._componentRenderer == null) {
this._componentRenderer = new ComponentRenderer();
var context = this._componentRenderer.context;
WebHierarchicalGridDescriptionModule.register(context);
WebColumnGroupDescriptionModule.register(context);
}
return this._componentRenderer;
}
public webHierarchicalGridColumnGroupHeaderTemplate = (ctx: IgcColumnTemplateContext) => {
const column = (ctx as any).column;
return html`<div style="display:flex;align-items:center;gap:5px;">
<span draggable="false" @click=${(e: any) => this.toggleColumnGroup(column)}>
${this.columnGroupStates.get(column) ? "🔽" : "🔼"}
</span>
<span>${column.header}</span>
</div>`;
};
public columnGroupStates = new Map<IgcColumnGroupComponent, boolean>();
public toggleColumnGroup(columnGroup: IgcColumnGroupComponent) {
const columns = columnGroup.childColumns;
if (columnGroup.header === 'General Information') {
const column = columns[1] as IgcColumnComponent;
column.hidden = !column.hidden;
} else if (columnGroup.header === 'Address Information') {
for (const column of columns) {
const col = column as IgcColumnComponent;
if (col.header === "Location"){
for (const cl of col.childColumns) {
const c = cl as IgcColumnComponent;
if (c.field !== "Address"){
c.hidden = !c.hidden;
}
}
}
else if (col.header === "Contact Information"){
const c = col.childColumns[1] as IgcColumnComponent;
c.hidden = !c.hidden;
}
}
} else {
for (let i = 1; i < columns.length; i++) {
const c = columns[i] as IgcColumnComponent;
c.hidden = !c.hidden;
}
}
this.columnGroupStates.set(columnGroup, !this.columnGroupStates.get(columnGroup));
}
}
new Sample();
ts<!DOCTYPE html>
<html>
<head>
<title>Sample | Ignite UI | Web Components | infragistics</title>
<meta charset="UTF-8" />
<link rel="shortcut icon" href="https://static.infragistics.com/xplatform/images/browsers/wc.png" >
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Kanit&display=swap" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Titillium Web" />
<link rel="stylesheet" href="https://static.infragistics.com/xplatform/css/samples/shared.v8.css" />
<link rel="stylesheet" href="/src/index.css" type="text/css" />
</head>
<body>
<div id="root">
<div class="container sample ig-typography">
<div class="container fill">
<igc-hierarchical-grid
auto-generate="false"
name="hierarchicalGrid"
id="hierarchicalGrid"
id="hierarchicalGrid"
primary-key="ID"
moving="true"
allow-filtering="true">
<igc-column
field="CustomerID"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column-group
header="General Information"
name="columnGroup1"
id="columnGroup1">
<igc-column
field="Company"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column-group
header="Personal Details">
<igc-column
field="ContactName"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="ContactTitle"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
</igc-column-group>
</igc-column-group>
<igc-column-group
header="Address Information"
name="columnGroup2"
id="columnGroup2">
<igc-column-group
header="Location">
<igc-column
field="Address"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="City"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="PostalCode"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="Country"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
</igc-column-group>
<igc-column-group
header="Contact Information">
<igc-column
field="Phone"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="Fax"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
</igc-column-group>
</igc-column-group>
<igc-row-island
child-data-key="Orders"
auto-generate="false">
<igc-column-group
header="Order Information">
<igc-column-group
header="Order Details"
name="columnGroup3"
id="columnGroup3">
<igc-column
field="OrderID"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="EmployeeID"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="OrderDate"
data-type="date"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="RequiredDate"
data-type="date"
sortable="true"
resizable="true">
</igc-column>
</igc-column-group>
<igc-column-group
header="General Shipping Information"
name="columnGroup4"
id="columnGroup4">
<igc-column
field="ShipDate"
data-type="date"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="ShipVia"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="Freight"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="ShipName"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
</igc-column-group>
<igc-column-group
header="Shipping Locations"
name="columnGroup5"
id="columnGroup5">
<igc-column
field="ShipAddress"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="ShipCity"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="ShipPostalCode"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="ShipCountry"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
</igc-column-group>
</igc-column-group>
<igc-row-island
child-data-key="OrderDetails"
auto-generate="false">
<igc-column
field="ProductID"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="UnitPrice"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="Quantity"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="Discount"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
</igc-row-island>
</igc-row-island>
</igc-hierarchical-grid>
</div>
</div>
</div>
<!-- This script is needed only for parcel and it will be excluded for webpack -->
<% if (false) { %><script src="src/index.ts"></script><% } %>
</body>
</html>
html/* shared styles are loaded from: */
/* https://static.infragistics.com/xplatform/css/samples */
css
スタイル設定
定義済みのテーマに加えて、利用可能な CSS プロパティのいくつかを設定することで、グリッドをさらにカスタマイズできます。 一部の色を変更したい場合は、最初にグリッドのクラスを設定する必要があります。
<igc-hierarchical-grid class="grid"></igc-hierarchical-grid>
html
次に、そのクラスに関連する CSS プロパティを設定します。
.grid {
--ig-grid-header-background: #e0f3ff;
--ig-grid-header-text-color: #e41c77;
--ig-grid-header-border-width: 1px;
--ig-grid-header-border-style: solid;
--ig-grid-header-border-color: rgba(0, 0, 0, 0.08);
}
css
デモ
import 'igniteui-webcomponents-grids/grids/combined';
import { ComponentRenderer, WebHierarchicalGridDescriptionModule, WebColumnGroupDescriptionModule } from 'igniteui-webcomponents-core';
import { IgcHierarchicalGridComponent } from 'igniteui-webcomponents-grids/grids';
import HierarchicalCustomers from './HierarchicalCustomers.json';
import "igniteui-webcomponents-grids/grids/themes/light/bootstrap.css";
import "./index.css";
export class Sample {
private hierarchicalGrid: IgcHierarchicalGridComponent
private _bind: () => void;
constructor() {
var hierarchicalGrid = this.hierarchicalGrid = document.getElementById('hierarchicalGrid') as IgcHierarchicalGridComponent;
this._bind = () => {
hierarchicalGrid.data = this.hierarchicalCustomers;
}
this._bind();
}
private _hierarchicalCustomers: any[] = HierarchicalCustomers;
public get hierarchicalCustomers(): any[] {
return this._hierarchicalCustomers;
}
private _componentRenderer: ComponentRenderer = null;
public get renderer(): ComponentRenderer {
if (this._componentRenderer == null) {
this._componentRenderer = new ComponentRenderer();
var context = this._componentRenderer.context;
WebHierarchicalGridDescriptionModule.register(context);
WebColumnGroupDescriptionModule.register(context);
}
return this._componentRenderer;
}
}
new Sample();
ts<!DOCTYPE html>
<html>
<head>
<title>Sample | Ignite UI | Web Components | infragistics</title>
<meta charset="UTF-8" />
<link rel="shortcut icon" href="https://static.infragistics.com/xplatform/images/browsers/wc.png" >
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Kanit&display=swap" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Titillium Web" />
<link rel="stylesheet" href="https://static.infragistics.com/xplatform/css/samples/shared.v8.css" />
<link rel="stylesheet" href="/src/index.css" type="text/css" />
</head>
<body>
<div id="root">
<div class="container sample ig-typography">
<div class="container fill">
<igc-hierarchical-grid
auto-generate="false"
name="hierarchicalGrid"
id="hierarchicalGrid"
id="hierarchicalGrid"
primary-key="ID"
moving="true"
allow-filtering="true">
<igc-column
field="CustomerID"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column-group
header="General Information">
<igc-column
field="Company"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column-group
header="Personal Details">
<igc-column
field="ContactName"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="ContactTitle"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
</igc-column-group>
</igc-column-group>
<igc-column-group
header="Address Information">
<igc-column-group
header="Location">
<igc-column
field="Address"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="City"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="PostalCode"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="Country"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
</igc-column-group>
<igc-column-group
header="Contact Information">
<igc-column
field="Phone"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="Fax"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
</igc-column-group>
</igc-column-group>
<igc-row-island
child-data-key="Orders"
auto-generate="false">
<igc-column-group
header="Order Information">
<igc-column-group
header="Order Details">
<igc-column
field="OrderID"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="EmployeeID"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="OrderDate"
data-type="date"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="RequiredDate"
data-type="date"
sortable="true"
resizable="true">
</igc-column>
</igc-column-group>
<igc-column-group
header="General Shipping Information">
<igc-column
field="ShipDate"
data-type="date"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="ShipVia"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="Freight"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="ShipName"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
</igc-column-group>
<igc-column-group
header="Shipping Locations">
<igc-column
field="ShipAddress"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="ShipCity"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="ShipPostalCode"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="ShipCountry"
data-type="string"
sortable="true"
resizable="true">
</igc-column>
</igc-column-group>
</igc-column-group>
<igc-row-island
child-data-key="OrderDetails"
auto-generate="false">
<igc-column
field="ProductID"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="UnitPrice"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="Quantity"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
<igc-column
field="Discount"
data-type="number"
sortable="true"
resizable="true">
</igc-column>
</igc-row-island>
</igc-row-island>
</igc-hierarchical-grid>
</div>
</div>
</div>
<!-- This script is needed only for parcel and it will be excluded for webpack -->
<% if (false) { %><script src="src/index.ts"></script><% } %>
</body>
</html>
html/* shared styles are loaded from: */
/* https://static.infragistics.com/xplatform/css/samples */
#hierarchicalGrid {
--ig-grid-header-background: #e0f3ff;
--ig-grid-header-text-color: #e41c77;
--ig-grid-header-border-width: 1px;
--ig-grid-header-border-style: solid;
--ig-grid-header-border-color: rgba(0, 0, 0, 0.08);
}
css
API リファレンス
その他のリソース
コミュニティに参加して新しいアイデアをご提案ください。