Web Components Hierarchical Grid 行のピン固定
Web Components Hierarchical Grid の Ignite UI for Web Components 行ピン固定機能を使用すると、1 つまたは複数の行をグリッドの上部または下部にピン固定できます。行ピン固定を使用すると、エンドユーザーは特定の順序で行をピン固定し、IgcHierarchicalGridComponent
を垂直にスクロールしても常に表示される特別な領域に行を複製できます。Web Components Hierarchical Grid には組み込みの行ピン固定 UI が含まれており、Hierarchical Grid のコンテキストで IgcActionStrip
コンポーネントを初期化することで有効になります。その他、カスタム UI を定義し、行のピン固定 API を介して行のピン固定状態を変更できます。
Web Components Hierarchical Grid 行ピン固定の例
import { IgcPropertyEditorPanelModule } from 'igniteui-webcomponents-layouts';
import 'igniteui-webcomponents-grids/grids/combined';
import { ComponentRenderer, PropertyEditorPanelDescriptionModule, WebHierarchicalGridDescriptionModule } from 'igniteui-webcomponents-core';
import { IgcPropertyEditorPanelComponent, IgcPropertyEditorPropertyDescriptionComponent } from 'igniteui-webcomponents-layouts';
import { IgcHierarchicalGridComponent, IgcPinningConfig, RowPinningPosition, ColumnPinningPosition, IgcActionStripComponent, IgcRowIslandComponent } from 'igniteui-webcomponents-grids/grids';
import SingersData from './SingersData.json';
import { IgcPropertyEditorPropertyDescriptionChangedEventArgs } 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 propertyEditorHierarchicalGrid: IgcPropertyEditorPanelComponent
private rowPinningEditor: IgcPropertyEditorPropertyDescriptionComponent
private grid: IgcHierarchicalGridComponent
private _pinningConfig1: IgcPinningConfig | null = null;
public get pinningConfig1(): IgcPinningConfig {
if (this._pinningConfig1 == null)
{
var pinningConfig1: IgcPinningConfig = {} as IgcPinningConfig;
pinningConfig1.rows = RowPinningPosition.Top;
pinningConfig1.columns = ColumnPinningPosition.End;
this._pinningConfig1 = pinningConfig1;
}
return this._pinningConfig1;
}
private actionStrip1: IgcActionStripComponent
private rowIsland1: IgcRowIslandComponent
private _pinningConfig2: IgcPinningConfig | null = null;
public get pinningConfig2(): IgcPinningConfig {
if (this._pinningConfig2 == null)
{
var pinningConfig2: IgcPinningConfig = {} as IgcPinningConfig;
pinningConfig2.rows = RowPinningPosition.Top;
pinningConfig2.columns = ColumnPinningPosition.End;
this._pinningConfig2 = pinningConfig2;
}
return this._pinningConfig2;
}
private actionStrip2: IgcActionStripComponent
private _bind: () => void;
constructor() {
var propertyEditorHierarchicalGrid = this.propertyEditorHierarchicalGrid = document.getElementById('PropertyEditorHierarchicalGrid') as IgcPropertyEditorPanelComponent;
var rowPinningEditor = this.rowPinningEditor = document.getElementById('rowPinningEditor') as IgcPropertyEditorPropertyDescriptionComponent;
this.webHierarchicalGridChangePinningConfig = this.webHierarchicalGridChangePinningConfig.bind(this);
var grid = this.grid = document.getElementById('grid') as IgcHierarchicalGridComponent;
this.webHierarchicalGridPinRowOnRendered = this.webHierarchicalGridPinRowOnRendered.bind(this);
var actionStrip1 = this.actionStrip1 = document.getElementById('actionStrip1') as IgcActionStripComponent;
var rowIsland1 = this.rowIsland1 = document.getElementById('rowIsland1') as IgcRowIslandComponent;
var actionStrip2 = this.actionStrip2 = document.getElementById('actionStrip2') as IgcActionStripComponent;
this._bind = () => {
propertyEditorHierarchicalGrid.componentRenderer = this.renderer;
propertyEditorHierarchicalGrid.target = this.grid;
rowPinningEditor.changed = this.webHierarchicalGridChangePinningConfig;
grid.data = this.singersData;
grid.addEventListener("rendered", this.webHierarchicalGridPinRowOnRendered);
grid.pinning = this.pinningConfig1;
rowIsland1.pinning = this.pinningConfig2;
}
this._bind();
}
private _singersData: any[] = SingersData;
public get singersData(): any[] {
return this._singersData;
}
private _componentRenderer: ComponentRenderer = null;
public get renderer(): ComponentRenderer {
if (this._componentRenderer == null) {
this._componentRenderer = new ComponentRenderer();
var context = this._componentRenderer.context;
PropertyEditorPanelDescriptionModule.register(context);
WebHierarchicalGridDescriptionModule.register(context);
}
return this._componentRenderer;
}
public webHierarchicalGridChangePinningConfig(sender: any, args: IgcPropertyEditorPropertyDescriptionChangedEventArgs): void {
var newPinningPosition = args.newValue === "Top" ? RowPinningPosition.Top : RowPinningPosition.Bottom;
var hierarchicalGrid = document.getElementById('grid') as IgcHierarchicalGridComponent;
hierarchicalGrid.pinning.rows = newPinningPosition;
if (rowIsland1) {
var rowIsland1 = document.getElementById('rowIsland1') as IgcRowIslandComponent;
rowIsland1.pinning.rows = newPinningPosition;
}
if (rowIsland2) {
var rowIsland2 = document.getElementById('rowIsland2') as IgcRowIslandComponent;
if (rowIsland2) {
rowIsland2.pinning.rows = newPinningPosition;
}
}
if (rowIsland3) {
var rowIsland3 = document.getElementById('rowIsland3') as IgcRowIslandComponent;
if (rowIsland3) {
rowIsland3.pinning.rows = newPinningPosition;
}
}
}
public webHierarchicalGridPinRowOnRendered(): void {
var hierarchicalGrid = this.grid;
hierarchicalGrid.pinRow(hierarchicalGrid.data[0].Photo);
hierarchicalGrid.pinRow(hierarchicalGrid.data[1].Photo);
}
}
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="PropertyEditorHierarchicalGrid"
id="PropertyEditorHierarchicalGrid"
description-type="WebHierarchicalGrid"
is-horizontal="true"
is-wrapping-enabled="true">
<igc-property-editor-property-description
name="rowPinningEditor"
id="rowPinningEditor"
label="Row Pinning toggle"
value-type="EnumValue"
drop-down-names="Top, Bottom"
drop-down-values="Top, Bottom">
</igc-property-editor-property-description>
</igc-property-editor-panel>
</div>
<div class="container fill">
<igc-hierarchical-grid
auto-generate="false"
primary-key="Photo"
id="grid"
name="grid"
id="grid"
cell-selection="none">
<igc-column
field="Artist"
header="Artist"
data-type="string">
</igc-column>
<igc-column
field="Photo"
header="Photo"
data-type="image"
min-width="115px">
</igc-column>
<igc-column
field="Debut"
header="Debut"
data-type="number">
</igc-column>
<igc-column
field="GrammyNominations"
header="Grammy Nominations"
data-type="string">
</igc-column>
<igc-column
field="GrammyAwards"
header="Grammy Awards"
data-type="string">
</igc-column>
<igc-action-strip
name="actionStrip1"
id="actionStrip1">
<igc-grid-pinning-actions
>
</igc-grid-pinning-actions>
</igc-action-strip>
<igc-row-island
child-data-key="Albums"
primary-key="Album"
cell-selection="none"
auto-generate="false"
name="rowIsland1"
id="rowIsland1">
<igc-column
field="Album"
header="Album"
data-type="string">
</igc-column>
<igc-column
field="LaunchDate"
header="Launch Date"
data-type="date">
</igc-column>
<igc-column
field="BillboardReview"
header="Billboard Review"
data-type="string">
</igc-column>
<igc-column
field="USBillboard200"
header="US Billboard 200"
data-type="string">
</igc-column>
<igc-action-strip
name="actionStrip2"
id="actionStrip2">
<igc-grid-pinning-actions
>
</igc-grid-pinning-actions>
</igc-action-strip>
</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ツールキットにアクセスして、すばやく独自のアプリの作成を開始します。無料でダウンロードできます。
行のピン固定 UI
組み込みの行ピン固定 UI は、IgcGridPinningActions
コンポーネントと IgcActionStrip
コンポーネントを追加することで有効になります。アクション ストリップは、行にカーソルを合わせると自動的に表示され、表示されている行の状態に基づいてピン固定またはピン固定解除ボタンのアイコンが表示されます。ピン固定された行のコピーをビューにスクロールする追加のアクションがピン固定された行ごとに表示されます。
<igc-hierarchical-grid auto-generate="false">
<igc-column field="Name" header="Full Name"></igc-column>
<igc-action-strip>
<igc-grid-pinning-actions></igc-grid-pinning-actions>
<igc-grid-editing-actions></igc-grid-editing-actions>
</igc-action-strip>
</igc-hierarchical-grid>
html
行のピン固定 API
行のピン固定は Row
の pinned
入力によって制御されます。デフォルトでピン固定行は IgcHierarchicalGridComponent
の上側に固定して描画され、IgcHierarchicalGridComponent
本体のピン固定されていない行は垂直スクロールされます。
this.grid.getRowByIndex(0).pinned = true;
typescript
IgcHierarchicalGridComponent
の pinRow
または unpinRow
メソッドを使用して ID によって行をピン固定またはピン固定解除できます。
this.grid.pinRow('ALFKI');
this.grid.unpinRow('ALFKI');
typescript
注: 行の ID は、グリッドの primaryKey
またはレコード インスタンス自体によって定義される主キー値です。両方のメソッドは操作に成功したかどうかを示すブール値を返します。よくある失敗の原因に行がすでにその状態になっていることがあります。
行は、最後にピンされた行の下にピン固定されます。ピン固定行の順序を変更するには、RowPinning
イベントでイベント引数の InsertAtIndex
プロパティを適切な位置インデックスに変更します。
<igc-hierarchical-grid id="grid" auto-generate="true">
</igc-hierarchical-grid>
html
constructor() {
var grid1 = document.getElementById('grid1') as IgcHierarchicalGridComponent;
grid1.data = this.data;
grid1.addEventListener("rowPinning", this.rowPinning);
}
public rowPinning(event) {
event.detail.insertAtIndex = 0;
}
typescript
ピン固定の位置
pinning
設定オプションを使用して、行のピン固定の位置を変更できます。ピン固定の位置を Top または Bottom のいずれかに設定できます。
Bottom に設定すると、行がピン固定されていない行の後に、グリッドの一番下にレンダリングされます。ピン固定されていない行は垂直にスクロールできますが、ピン固定された行は下側に固定されます。
<igc-hierarchical-grid id="dataGrid" auto-generate="true"></igc-hierarchical-grid>
html
var grid = document.getElementById('dataGrid') as IgcHierarchicalGridComponent;
grid.pinning = { rows: RowPinningPosition.Bottom };
typescript
カスタム行ピン固定 UI
カスタム UI を定義し、関連する API を介して行のピン状態を変更できます。
アイコン付きの追加の列による
アクション ストリップの代わりに、すべての行にピンのアイコンを表示し、エンドユーザーが特定の行のピン状態をクリックして変更できます。 カスタム アイコンを含むセル テンプレートの列を追加することで実行できます。
<igc-hierarchical-grid id="grid" primary-key="ID" auto-generate="false">
<igc-column id="column1" name="column1"></igc-column>
<igc-row-island child-data-key="Orders" auto-generate="true">
</igc-row-island>
</igc-hierarchical-grid>
html
constructor() {
var grid = document.getElementById('grid') as IgcHierarchicalGridComponent;
var column = document.getElementById('column1') as IgcColumnComponent;
grid.data = this.data;
column.bodyTemplate = this.pinCellTemplate;
}
public pinCellTemplate = (ctx: IgcCellTemplateContext) => {
const row = ctx.cell.row;
return html`<span @pointerdown=${(e: any) => this.togglePinning(row)}>📌</span>`;
}
typescript
カスタムアイコンをクリックすると、関連する行のピン状態は、行の API メソッドを使用して変更できます。
public togglePinning(row: IgcRowType) {
row.pinned = !row.pinned;
}
typescript
デモ
import { IgcPropertyEditorPanelModule } from 'igniteui-webcomponents-layouts';
import 'igniteui-webcomponents-grids/grids/combined';
import { ComponentRenderer, PropertyEditorPanelDescriptionModule, WebHierarchicalGridDescriptionModule } from 'igniteui-webcomponents-core';
import { IgcPropertyEditorPanelComponent, IgcPropertyEditorPropertyDescriptionComponent } from 'igniteui-webcomponents-layouts';
import { IgcHierarchicalGridComponent, IgcPinningConfig, RowPinningPosition, ColumnPinningPosition, IgcColumnComponent, IgcRowIslandComponent } from 'igniteui-webcomponents-grids/grids';
import SingersData from './SingersData.json';
import { IgcPropertyEditorPropertyDescriptionChangedEventArgs } from 'igniteui-webcomponents-layouts';
import { IgcCellTemplateContext, IgcRowType } from 'igniteui-webcomponents-grids/grids';
import { html, nothing } from 'lit-html';
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 propertyEditorHierarchicalGrid: IgcPropertyEditorPanelComponent
private rowPinningEditor: IgcPropertyEditorPropertyDescriptionComponent
private grid: IgcHierarchicalGridComponent
private _pinningConfig1: IgcPinningConfig | null = null;
public get pinningConfig1(): IgcPinningConfig {
if (this._pinningConfig1 == null)
{
var pinningConfig1: IgcPinningConfig = {} as IgcPinningConfig;
pinningConfig1.rows = RowPinningPosition.Top;
pinningConfig1.columns = ColumnPinningPosition.End;
this._pinningConfig1 = pinningConfig1;
}
return this._pinningConfig1;
}
private column1: IgcColumnComponent
private rowIsland1: IgcRowIslandComponent
private _pinningConfig2: IgcPinningConfig | null = null;
public get pinningConfig2(): IgcPinningConfig {
if (this._pinningConfig2 == null)
{
var pinningConfig2: IgcPinningConfig = {} as IgcPinningConfig;
pinningConfig2.rows = RowPinningPosition.Top;
pinningConfig2.columns = ColumnPinningPosition.End;
this._pinningConfig2 = pinningConfig2;
}
return this._pinningConfig2;
}
private column2: IgcColumnComponent
private rowIsland2: IgcRowIslandComponent
private _pinningConfig3: IgcPinningConfig | null = null;
public get pinningConfig3(): IgcPinningConfig {
if (this._pinningConfig3 == null)
{
var pinningConfig3: IgcPinningConfig = {} as IgcPinningConfig;
pinningConfig3.rows = RowPinningPosition.Top;
pinningConfig3.columns = ColumnPinningPosition.End;
this._pinningConfig3 = pinningConfig3;
}
return this._pinningConfig3;
}
private column3: IgcColumnComponent
private rowIsland3: IgcRowIslandComponent
private _pinningConfig4: IgcPinningConfig | null = null;
public get pinningConfig4(): IgcPinningConfig {
if (this._pinningConfig4 == null)
{
var pinningConfig4: IgcPinningConfig = {} as IgcPinningConfig;
pinningConfig4.rows = RowPinningPosition.Top;
pinningConfig4.columns = ColumnPinningPosition.End;
this._pinningConfig4 = pinningConfig4;
}
return this._pinningConfig4;
}
private column4: IgcColumnComponent
private _bind: () => void;
constructor() {
var propertyEditorHierarchicalGrid = this.propertyEditorHierarchicalGrid = document.getElementById('PropertyEditorHierarchicalGrid') as IgcPropertyEditorPanelComponent;
var rowPinningEditor = this.rowPinningEditor = document.getElementById('rowPinningEditor') as IgcPropertyEditorPropertyDescriptionComponent;
this.webHierarchicalGridChangePinningConfig = this.webHierarchicalGridChangePinningConfig.bind(this);
var grid = this.grid = document.getElementById('grid') as IgcHierarchicalGridComponent;
var column1 = this.column1 = document.getElementById('column1') as IgcColumnComponent;
var rowIsland1 = this.rowIsland1 = document.getElementById('rowIsland1') as IgcRowIslandComponent;
var column2 = this.column2 = document.getElementById('column2') as IgcColumnComponent;
var rowIsland2 = this.rowIsland2 = document.getElementById('rowIsland2') as IgcRowIslandComponent;
var column3 = this.column3 = document.getElementById('column3') as IgcColumnComponent;
var rowIsland3 = this.rowIsland3 = document.getElementById('rowIsland3') as IgcRowIslandComponent;
var column4 = this.column4 = document.getElementById('column4') as IgcColumnComponent;
this._bind = () => {
propertyEditorHierarchicalGrid.componentRenderer = this.renderer;
propertyEditorHierarchicalGrid.target = this.grid;
rowPinningEditor.changed = this.webHierarchicalGridChangePinningConfig;
grid.data = this.singersData;
grid.pinning = this.pinningConfig1;
column1.bodyTemplate = this.webHierarchicalGridRowPinCellTemplate;
rowIsland1.pinning = this.pinningConfig2;
column2.bodyTemplate = this.webHierarchicalGridRowPinCellTemplate;
rowIsland2.pinning = this.pinningConfig3;
column3.bodyTemplate = this.webHierarchicalGridRowPinCellTemplate;
rowIsland3.pinning = this.pinningConfig4;
column4.bodyTemplate = this.webHierarchicalGridRowPinCellTemplate;
}
this._bind();
}
private _singersData: any[] = SingersData;
public get singersData(): any[] {
return this._singersData;
}
private _componentRenderer: ComponentRenderer = null;
public get renderer(): ComponentRenderer {
if (this._componentRenderer == null) {
this._componentRenderer = new ComponentRenderer();
var context = this._componentRenderer.context;
PropertyEditorPanelDescriptionModule.register(context);
WebHierarchicalGridDescriptionModule.register(context);
}
return this._componentRenderer;
}
public webHierarchicalGridChangePinningConfig(sender: any, args: IgcPropertyEditorPropertyDescriptionChangedEventArgs): void {
var newPinningPosition = args.newValue === "Top" ? RowPinningPosition.Top : RowPinningPosition.Bottom;
var hierarchicalGrid = document.getElementById('grid') as IgcHierarchicalGridComponent;
hierarchicalGrid.pinning.rows = newPinningPosition;
if (rowIsland1) {
var rowIsland1 = document.getElementById('rowIsland1') as IgcRowIslandComponent;
rowIsland1.pinning.rows = newPinningPosition;
}
if (rowIsland2) {
var rowIsland2 = document.getElementById('rowIsland2') as IgcRowIslandComponent;
if (rowIsland2) {
rowIsland2.pinning.rows = newPinningPosition;
}
}
if (rowIsland3) {
var rowIsland3 = document.getElementById('rowIsland3') as IgcRowIslandComponent;
if (rowIsland3) {
rowIsland3.pinning.rows = newPinningPosition;
}
}
}
public webHierarchicalGridRowPinCellTemplate = (ctx: IgcCellTemplateContext) => {
const row = ctx.cell.row;
return html`<span @pointerdown=${(e: any) => this.toggleRowPin(row)}>📌</span>`
}
public toggleRowPin(row: IgcRowType) {
row.pinned = !row.pinned;
}
}
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="PropertyEditorHierarchicalGrid"
id="PropertyEditorHierarchicalGrid"
description-type="WebHierarchicalGrid"
is-horizontal="true"
is-wrapping-enabled="true">
<igc-property-editor-property-description
name="rowPinningEditor"
id="rowPinningEditor"
label="Row Pinning toggle"
value-type="EnumValue"
drop-down-names="Top, Bottom"
drop-down-values="Top, Bottom">
</igc-property-editor-property-description>
</igc-property-editor-panel>
</div>
<div class="container fill">
<igc-hierarchical-grid
auto-generate="false"
primary-key="Photo"
id="grid"
name="grid"
id="grid"
cell-selection="none">
<igc-column
width="70px"
filterable="false"
pinned="true"
name="column1"
id="column1">
</igc-column>
<igc-column
field="Artist"
header="Artist"
data-type="string">
</igc-column>
<igc-column
field="Photo"
header="Photo"
data-type="image">
</igc-column>
<igc-column
field="Debut"
header="Debut"
data-type="number">
</igc-column>
<igc-column
field="GrammyNominations"
header="Grammy Nominations"
data-type="string">
</igc-column>
<igc-column
field="GrammyAwards"
header="Grammy Awards"
data-type="string">
</igc-column>
<igc-row-island
child-data-key="Albums"
primary-key="Album"
cell-selection="none"
auto-generate="false"
name="rowIsland1"
id="rowIsland1">
<igc-column
width="70px"
filterable="false"
pinned="true"
name="column2"
id="column2">
</igc-column>
<igc-column
field="Album"
header="Album"
data-type="string">
</igc-column>
<igc-column
field="LaunchDate"
header="Launch Date"
data-type="date">
</igc-column>
<igc-column
field="BillboardReview"
header="Billboard Review"
data-type="string">
</igc-column>
<igc-column
field="USBillboard200"
header="US Billboard 200"
data-type="string">
</igc-column>
<igc-row-island
child-data-key="Songs"
primary-key="Number"
cell-selection="none"
auto-generate="false"
name="rowIsland2"
id="rowIsland2">
<igc-column
width="70px"
filterable="false"
pinned="true"
name="column3"
id="column3">
</igc-column>
<igc-column
field="Number"
header="No."
data-type="string">
</igc-column>
<igc-column
field="Title"
header="Title"
data-type="string">
</igc-column>
<igc-column
field="Released"
header="Released"
data-type="string">
</igc-column>
<igc-column
field="Genre"
header="Genre"
data-type="string">
</igc-column>
</igc-row-island>
</igc-row-island>
<igc-row-island
child-data-key="Tours"
primary-key="Tour"
cell-selection="none"
auto-generate="false"
name="rowIsland3"
id="rowIsland3">
<igc-column
width="70px"
filterable="false"
pinned="true"
name="column4"
id="column4">
</igc-column>
<igc-column
field="Tour"
header="Tour"
data-type="string">
</igc-column>
<igc-column
field="StartedOn"
header="Started on"
data-type="string">
</igc-column>
<igc-column
field="Location"
header="Location"
data-type="string">
</igc-column>
<igc-column
field="Headliner"
header="Headliner"
data-type="string">
</igc-column>
</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
行ピン固定の制限
- データソースに存在するレコードのみをピン固定できます。
- 行のピン固定状態は Excel にエクスポートされません。グリッドは行のピン固定が適用されずにエクスポートされます。
- グリッドのスクロール可能領域におけるピン固定行のコピーは、ピン固定行が存在する状態で他のグリッド機能が動作するのに不可欠な役割を果たします。そのため、その生成を無効化または削除することはできません。
- 行選択 は 行 ID のみで動作するため、ピン固定行を選択するとそのコピーも選択されます (逆も同様)。さらに、ピン固定領域での範囲選択 (Shift + クリックにより) は、スクロール可能な領域で行を範囲選択する場合と同じように機能します。結果として、間にある行はピン固定されていなくてもすべて選択されます。API を 介して選択した行を取得すると、選択した各レコードの単一のインスタンスのみを返します。
スタイル設定
定義済みのテーマに加えて、利用可能な CSS プロパティのいくつかを設定することで、グリッドをさらにカスタマイズできます。 一部の色を変更したい場合は、最初にグリッドのクラスを設定する必要があります。
<igc-hierarchical-grid class="grid"></igc-hierarchical-grid>
html
次に、そのクラスに関連する CSS プロパティを設定します。
.grid {
--ig-grid-pinned-border-width: 5px;
--ig-grid-pinned-border-style: double;
--ig-grid-pinned-border-color: #FFCD0F;
--ig-grid-cell-active-border-color: #FFCD0F;
}
css
デモ
import 'igniteui-webcomponents-grids/grids/combined';
import { IgcHierarchicalGridComponent, IgcPinningConfig, RowPinningPosition, ColumnPinningPosition, IgcActionStripComponent, IgcRowIslandComponent } from 'igniteui-webcomponents-grids/grids';
import SingersData from './SingersData.json';
import { IgcGridComponent } from 'igniteui-webcomponents-grids/grids';
import "igniteui-webcomponents-grids/grids/themes/light/bootstrap.css";
import "./index.css";
export class Sample {
private grid: IgcHierarchicalGridComponent
private _pinningConfig1: IgcPinningConfig | null = null;
public get pinningConfig1(): IgcPinningConfig {
if (this._pinningConfig1 == null)
{
var pinningConfig1: IgcPinningConfig = {} as IgcPinningConfig;
pinningConfig1.rows = RowPinningPosition.Top;
pinningConfig1.columns = ColumnPinningPosition.End;
this._pinningConfig1 = pinningConfig1;
}
return this._pinningConfig1;
}
private actionStrip1: IgcActionStripComponent
private rowIsland1: IgcRowIslandComponent
private _pinningConfig2: IgcPinningConfig | null = null;
public get pinningConfig2(): IgcPinningConfig {
if (this._pinningConfig2 == null)
{
var pinningConfig2: IgcPinningConfig = {} as IgcPinningConfig;
pinningConfig2.rows = RowPinningPosition.Top;
pinningConfig2.columns = ColumnPinningPosition.End;
this._pinningConfig2 = pinningConfig2;
}
return this._pinningConfig2;
}
private actionStrip2: IgcActionStripComponent
private _bind: () => void;
constructor() {
var grid = this.grid = document.getElementById('grid') as IgcHierarchicalGridComponent;
this.webHierarchicalGridPinRowOnRendered = this.webHierarchicalGridPinRowOnRendered.bind(this);
var actionStrip1 = this.actionStrip1 = document.getElementById('actionStrip1') as IgcActionStripComponent;
var rowIsland1 = this.rowIsland1 = document.getElementById('rowIsland1') as IgcRowIslandComponent;
var actionStrip2 = this.actionStrip2 = document.getElementById('actionStrip2') as IgcActionStripComponent;
this._bind = () => {
grid.data = this.singersData;
grid.addEventListener("rendered", this.webHierarchicalGridPinRowOnRendered);
grid.pinning = this.pinningConfig1;
rowIsland1.pinning = this.pinningConfig2;
}
this._bind();
}
private _singersData: any[] = SingersData;
public get singersData(): any[] {
return this._singersData;
}
public webHierarchicalGridPinRowOnRendered(): void {
var hierarchicalGrid = this.grid;
hierarchicalGrid.pinRow(hierarchicalGrid.data[0].Photo);
hierarchicalGrid.pinRow(hierarchicalGrid.data[1].Photo);
}
}
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"
primary-key="Photo"
id="grid"
name="grid"
id="grid"
cell-selection="none">
<igc-column
field="Artist"
header="Artist"
data-type="string">
</igc-column>
<igc-column
field="Photo"
header="Photo"
data-type="image"
min-width="115px">
</igc-column>
<igc-column
field="Debut"
header="Debut"
data-type="number">
</igc-column>
<igc-column
field="GrammyNominations"
header="Grammy Nominations"
data-type="string">
</igc-column>
<igc-column
field="GrammyAwards"
header="Grammy Awards"
data-type="string">
</igc-column>
<igc-action-strip
name="actionStrip1"
id="actionStrip1">
<igc-grid-pinning-actions
>
</igc-grid-pinning-actions>
</igc-action-strip>
<igc-row-island
child-data-key="Albums"
primary-key="Album"
cell-selection="none"
auto-generate="false"
name="rowIsland1"
id="rowIsland1">
<igc-column
field="Album"
header="Album"
data-type="string">
</igc-column>
<igc-column
field="LaunchDate"
header="Launch Date"
data-type="date">
</igc-column>
<igc-column
field="BillboardReview"
header="Billboard Review"
data-type="string">
</igc-column>
<igc-column
field="USBillboard200"
header="US Billboard 200"
data-type="string">
</igc-column>
<igc-action-strip
name="actionStrip2"
id="actionStrip2">
<igc-grid-pinning-actions
>
</igc-grid-pinning-actions>
</igc-action-strip>
</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 */
#grid {
--ig-grid-pinned-border-width: 5px;
--ig-grid-pinned-border-style: double;
--ig-grid-pinned-border-color: #FFCD0F;
--ig-grid-cell-active-border-color: #FFCD0F;
}
css
API リファレンス
IgcHierarchicalGridComponent
HierarchicalGridRow
IgcRowType
その他のリソース
コミュニティに参加して新しいアイデアをご提案ください。