IgxGrid の列を動的に生成する方法を紹介します。

列とデータの準備

あらかじめ列定義とバインドするデータを用意しておきます。

data: any[];
columns: any[];

ngOnInit() {
	// 列の定義
	this.columns = [
	  { field: 'ID', headerText: 'ID', width: 100, resizable: false, pinned: true },
	  { field: 'Name', headerText: '名前', width: 150, resizable: false, pinned: true },
	  { field: 'Location', headerText: '勤務地', width: 100, resizable: true },
	  { field: 'Department', headerText: '部署', width: 100, resizable: true },
	  { field: 'PostalCode', headerText: '郵便番号', width: 120, resizable: true },
	  { field: 'Prefecture', headerText: '住所1', width: 100, resizable: true },
	  { field: 'Address', headerText: '住所2', width: 250, resizable: true },
	  { field: 'Phone', headerText: '電話番号', width: 150, resizable: true }
	];
	// データ
	this.data = [
	  { 'ID': 105, 'Name': '森上 偉久馬', 'Location': '東京本社', 'Department': '第一営業', 'PostalCode': '1900003', 'Prefecture': '東京都', 'Address': '立川市栄町 4-18-XX', 'Phone': '(0425)25-05XX' },
	  { 'ID': 107, 'Name': '葛城 孝史', 'Location': '東京本社', 'Department': '第二営業', 'PostalCode': '1530064', 'Prefecture': '東京都', 'Address': '目黒区下目黒 3-16-XX', 'Phone': '(03)3714-75XX' },
	  ...省略(詳しくは添付サンプルを参照)...
	  { 'ID': 307, 'Name': '小川 さよ子', 'Location': '北九州支社', 'Department': '営業二', 'PostalCode': '8160825', 'Prefecture': '福岡県', 'Address': '春日市伯玄町 2-X', 'Phone': '(092)591-64XX' },
	];
}

IgxGrid の定義

配列 columns をループで回し、IgxGridColumn(igx-column) を動的に生成しています。field、header、width といった列オプションの値設定以外にも、列変更機能(resizable) や列固定機能(pinned)の設定も、配列 columns の各要素の値が反映されます。

<igx-grid #grid1 [data]="data"
  [width]="'700px'" [height]="'300px'"
  [displayDensity]="'compact'">
    <igx-column *ngFor="let c of columns"
          [field]="c.field"
          [header]="c.headerText"
          [width]="c.width"

          [resizable]="c.resizable"
          [pinned]="c.pinned"
          [sortable]="true"
          [movable]="true">
    </igx-column>
</igx-grid>

実行結果

Tagged:

製品について

Ignite UI for Angular