このコントロールは非推奨であり、Grid に置き換えられていることに注意してください。そのため、そのコントロールに移行することをお勧めします。これは新しい機能を受け取ることはなく、バグ修正は優先されません。コードベースをデータ グリッドに移行する際のヘルプや質問については、サポートにお問い合わせください。
Web Components Grid 列選択の概要
Ignite UI for Web Components Data Grid は、IgcDataGridToolbarComponent
コンポーネントまたはページのどこにでも配置できる columnChooser
コンポーネントによって UI から列の表示/非表示を行う機能をサポートしています。列の IsHidden
プロパティにより、手動生成の列に対してプログラムによって列の表示/非表示を設定することができます。IsHidden
の値は columnChooser
コンポーネントに反映されます。各方法は列の表示状態を変更するために使用できます。
Web Components Grid 列選択の例
import { IgcDataGridModule } from 'igniteui-webcomponents-grids' ;
import { IgcGridColumnOptionsModule } from 'igniteui-webcomponents-grids' ;
import { IgcDataGridComponent } from 'igniteui-webcomponents-grids' ;
import { ModuleManager } from 'igniteui-webcomponents-core' ;
import { IgcTextColumnComponent } from 'igniteui-webcomponents-grids' ;
import { IgcDataGridToolbarModule } from 'igniteui-webcomponents-grids' ;
import { IgcDataGridToolbarComponent } from 'igniteui-webcomponents-grids' ;
ModuleManager.register(
IgcDataGridModule,
IgcDataGridToolbarModule,
IgcGridColumnOptionsModule
);
export class DataGridColumnChooserToolbar {
private grid: IgcDataGridComponent;
private toolbar: IgcDataGridToolbarComponent;
private data: any [] = [];
constructor ( ) {
this .grid = document .getElementById('grid' ) as IgcDataGridComponent;
this .toolbar = document .getElementById('toolbar' ) as IgcDataGridToolbarComponent;
this .initData();
this .grid.dataSource = this .data;
this .toolbar.targetGrid = this .grid;
}
public initData ( ) {
const names: string [] = [
'Intel CPU' , 'AMD CPU' ,
'Intel Motherboard' , 'AMD Motherboard' , 'Nvidia Motherboard' ,
'Nvidia GPU' , 'Gigabyte GPU' , 'Asus GPU' , 'AMD GPU' , 'MSI GPU' ,
'Corsair Memory' , 'Patriot Memory' , 'Skill Memory' ,
'Samsung HDD' , 'WD HDD' , 'Seagate HDD' , 'Intel HDD' , 'Asus HDD' ,
'Samsung SSD' , 'WD SSD' , 'Seagate SSD' , 'Intel SSD' , 'Asus SSD' ,
'Samsung Monitor' , 'Asus Monitor' , 'LG Monitor' , 'HP Monitor' ];
const countries: string [] = ['USA' , 'UK' , 'France' , 'Canada' , 'Poland' ,
'Denmark' , 'Croatia' , 'Australia' , 'Seychelles' ,
'Sweden' , 'Germany' , 'Japan' , 'Ireland' ,
'Barbados' , 'Jamaica' , 'Cuba' , 'Spain' ];
const status: string [] = [ 'Packing' , 'Shipped' , 'Delivered' ]
const sales: any [] = [];
for (let i = 0 ; i < 200 ; i++) {
const price = this .getRandomNumber(10000 , 90000 ) / 100 ;
const items = this .getRandomNumber(4 , 30 );
const value = Math .round(price * items);
const margin = this .getRandomNumber(2 , 5 );
const profit = Math .round((price * margin / 100 ) * items);
const country = this .getRandomItem(countries);
sales.push({
Country : country,
CountryFlag : this .getFlagImage(country),
Margin : margin,
OrderDate : this .getRandomDate(),
OrderItems : items,
OrderValue : value,
ProductID : 1001 + i,
ProductName : this .getRandomItem(names),
ProductPrice : price,
Profit : Math .round(profit),
Status : this .getRandomItem(status),
});
}
this .data = sales;
}
public getFlagImage(countryName: string ): string {
return 'https://static.infragistics.com/xplatform/images/flags/' + countryName + '.png' ;
}
public getGenderImage(gender: string ): string {
return 'https://static.infragistics.com/xplatform/images/genders/' + gender.toLowerCase() + '.png' ;
}
public getPersonImage(personID: string ): string {
return 'https://static.infragistics.com/xplatform/people/' + personID + '.png' ;
}
public getRandomDate(): Date {
const today: Date = new Date ();
const year: number = today.getFullYear();
const month: number = this .getRandomNumber(0 , 8 );
const day: number = this .getRandomNumber(10 , 27 );
return new Date (year, month, day);
}
public getRandomNumber(min: number , max : number ): number {
return Math .round(min + Math .random() * (max - min));
}
public getRandomItem(array: any []): any {
const index = Math .round(this .getRandomNumber(0 , array.length - 1 ));
return array[index];
}
}
new DataGridColumnChooserToolbar();
ts コピー <!DOCTYPE html >
<html >
<head >
<title > DataGridColumnChooserToolbar</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" type ="text/css" />
</head >
<body >
<div id ="root" >
<div class ="container sample" >
<igc-data-grid-toolbar
id ="toolbar"
toolbar-title ="Global Sales"
column-chooser ="true" >
</igc-data-grid-toolbar >
<igc-data-grid
id ="grid"
height ="calc(100% - 6rem)"
width ="100%"
corner-radius-top-left ="0"
corner-radius-top-right ="0"
is-column-options-enabled ="true"
auto-generate-columns ="false" >
<igc-text-column field ="ProductID" header-text ="ID" width ="*>90" horizontal-alignment ="center" > </igc-text-column >
<igc-image-column field ="CountryFlag" header-text ="Country" width ="*>115" content-opacity ="1" horizontal-alignment ="center"
padding-top ="5" padding-bottom ="5" > </igc-image-column >
<igc-text-column id ="productname" field ="ProductName" header-text ="Product" > </igc-text-column >
<igc-numeric-column field ="ProductPrice" header-text ="Price" width ="*>90" positive-prefix ="$" show-grouping-separator ="true" min-fraction-digits ="2" > </igc-numeric-column >
<igc-numeric-column field ="OrderItems" header-text ="Orders" width ="*>110" > </igc-numeric-column >
<igc-numeric-column field ="OrderValue" header-text ="Order Value" width ="*>135" positive-prefix ="$" show-grouping-separator ="true" > </igc-numeric-column >
<igc-date-time-column field ="OrderDate" header-text ="Order Date" width ="*>130" horizontal-alignment ="right" date-time-format ="DateShort" > </igc-date-time-column >
<igc-numeric-column field ="Margin" header-text ="Margin" width ="*>105" positive-suffix ="%" horizontal-alignment ="center" > </igc-numeric-column >
<igc-numeric-column field ="Profit" header-text ="Profit" width ="*>100" positive-prefix ="$" show-grouping-separator ="true" > </igc-numeric-column >
<igc-text-column field ="Status" header-text ="Status" width ="*>110" horizontal-alignment ="center" > </igc-text-column >
</igc-data-grid >
</div >
</div >
<% if (false) { %><script src ="src/index.ts" > </script > <% } %>
</body >
</html >
html コピー
このサンプルが気に入りましたか? 完全な Ignite UI for Web Componentsツールキットにアクセスして、すばやく独自のアプリの作成を開始します。無料でダウンロードできます。
ツールバーの列選択 UI
列選択 UI は、グリッドとは別に IgcDataGridToolbarComponent
コンポーネント内でアクセスできます。このため、ツールバーの columnChooser
プロパティを true に設定します。
ツールバーは IgcButtonComponent
を表示し、クリックすると列選択 UI を表示します。このボタンは、非表示列の合計も表示します。ツールバーが作成されていない場合、IgcColumnChooserComponent
プロパティを有効にしても効果はなく、ボタンを非表示にします。
IgcDataGridToolbarComponent
は、toolbarTitle
プロパティを使用してツールバーにタイトルを追加、columnChooserText
プロパティを設定して IgcButtonComponent
にテキストを配置、ColumnChooserTitle
を設定して、タイトル ヘッダーを列選択 UI に追加などの追加プロパティを提供します。
列選択は、グリッドの columnHidingAnimationMode
および columnShowingAnimationMode
プロパティを設定することでアニメーションで構成できます。
コード スニペット
以下は、データ グリッドの列選択ツールバー UI の実装方法を示します。
<igc-dataGrid-toolbar
toolbar-title ="Grid Title"
column-chooser ="true"
column-chooser-text ="Columns"
column-chooser-title ="Column Chooser" >
</igc-dataGrid-toolbar >
<igc-data-grid
id ="grid"
height ="calc(100% - 40px)"
width ="100%"
auto-generate-columns ="false"
default-column-min-width ="120px"
scrollbar-style = "thin"
column-hiding-animation-mode ="SlideOver" >
</igc-data-grid >
html
import { IgcDataGrid } from 'igniteui-webcomponents-grids' ;
import { IgcDataGridToolbar } from 'igniteui-webcomponents-grids' ;
import { ColumnMovingAnimationMode } from 'igniteui-webcomponents-grids' ;
private grid: IgcDataGridComponent;
private toolbar: IgcDataGridToolbarComponent;
connectedCallback ( ) {
this .toolbar.targetGrid = this .grid;
let productNameColumn = document .getElementById("productname" ) as IgcTextColumnComponent;
productNameColumn.isHidden = true ;
this .toolbar.columnChooser = true ;
this .toolbar.toolbarTitle = "Grid Title" ;
this .toolbar.columnChooserText = "Choose Text" ;
this .toolbar.columnChooserTitle = "Choose Title Text" ;
this .grid.columnMovingAnimationMode = ColumnMovingAnimationMode.SlideOver;
}
ts
シンプルな列選択
ツールバーなしで IgcColumnChooserComponent
UIを手動で表示し、ページの任意の場所に配置するとします。マークアップでコンポーネントのインスタンスを作成して簡単に行うことができます。
サンプル
EXAMPLE
TS
HTML
DataGridStyles.css
index.css
import './DataGridStyles.css' ;
import { IgcDataGridModule } from 'igniteui-webcomponents-grids' ;
import { IgcGridColumnOptionsModule } from 'igniteui-webcomponents-grids' ;
import { IgcDataGridComponent } from 'igniteui-webcomponents-grids' ;
import { ModuleManager } from 'igniteui-webcomponents-core' ;
import { IgcColumnChooserModule } from 'igniteui-webcomponents-grids' ;
import { IgcColumnChooserComponent } from 'igniteui-webcomponents-grids' ;
ModuleManager.register(
IgcDataGridModule,
IgcColumnChooserModule,
IgcGridColumnOptionsModule
);
export class DataGridColumnChooserPicker {
private grid: IgcDataGridComponent;
private columnChooser: IgcColumnChooserComponent;
private data: any [] = [];
constructor ( ) {
this .grid = document .getElementById('grid' ) as IgcDataGridComponent;
this .columnChooser = document .getElementById('columnUI' ) as IgcColumnChooserComponent;
this .initData();
this .grid.dataSource = this .data;
this .columnChooser.targetGrid = this .grid;
}
public initData ( ) {
const names: string [] = [
'Intel CPU' , 'AMD CPU' ,
'Intel Motherboard' , 'AMD Motherboard' , 'Nvidia Motherboard' ,
'Nvidia GPU' , 'Gigabyte GPU' , 'Asus GPU' , 'AMD GPU' , 'MSI GPU' ,
'Corsair Memory' , 'Patriot Memory' , 'Skill Memory' ,
'Samsung HDD' , 'WD HDD' , 'Seagate HDD' , 'Intel HDD' , 'Asus HDD' ,
'Samsung SSD' , 'WD SSD' , 'Seagate SSD' , 'Intel SSD' , 'Asus SSD' ,
'Samsung Monitor' , 'Asus Monitor' , 'LG Monitor' , 'HP Monitor' ];
const countries: string [] = ['USA' , 'UK' , 'France' , 'Canada' , 'Poland' ,
'Denmark' , 'Croatia' , 'Australia' , 'Seychelles' ,
'Sweden' , 'Germany' , 'Japan' , 'Ireland' ,
'Barbados' , 'Jamaica' , 'Cuba' , 'Spain' ];
const status: string [] = [ 'Packing' , 'Shipped' , 'Delivered' ]
const sales: any [] = [];
for (let i = 0 ; i < 200 ; i++) {
const price = this .getRandomNumber(10000 , 90000 ) / 100 ;
const items = this .getRandomNumber(4 , 30 );
const value = Math .round(price * items);
const margin = this .getRandomNumber(2 , 5 );
const profit = Math .round((price * margin / 100 ) * items);
const country = this .getRandomItem(countries);
sales.push({
Country : country,
CountryFlag : this .getFlagImage(country),
Margin : margin,
OrderDate : this .getRandomDate(),
OrderItems : items,
OrderValue : value,
ProductID : 1001 + i,
ProductName : this .getRandomItem(names),
ProductPrice : price,
Profit : Math .round(profit),
Status : this .getRandomItem(status),
});
}
this .data = sales;
}
public getFlagImage(countryName: string ): string {
return 'https://static.infragistics.com/xplatform/images/flags/' + countryName + '.png' ;
}
public getGenderImage(gender: string ): string {
return 'https://static.infragistics.com/xplatform/images/genders/' + gender.toLowerCase() + '.png' ;
}
public getPersonImage(personID: string ): string {
return 'https://static.infragistics.com/xplatform/people/' + personID + '.png' ;
}
public getRandomDate(): Date {
const today: Date = new Date ();
const year: number = today.getFullYear();
const month: number = this .getRandomNumber(0 , 8 );
const day: number = this .getRandomNumber(10 , 27 );
return new Date (year, month, day);
}
public getRandomNumber(min: number , max : number ): number {
return Math .round(min + Math .random() * (max - min));
}
public getRandomItem(array: any []): any {
const index = Math .round(this .getRandomNumber(0 , array.length - 1 ));
return array[index];
}
}
new DataGridColumnChooserPicker();
ts コピー <!DOCTYPE html >
<html >
<head >
<title > DataGridColumnChooserPicker</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" type ="text/css" />
</head >
<body >
<div id ="root" >
<div class ="container horizontal" >
<div class ="container" style ="margin-left: 0.4rem; margin-top: 2px; margin-right: 0.5rem; margin-bottom: 0.25rem; padding: 0.5rem; background: rgb(248, 248, 248); border-radius: 10px; box-shadow: 1px 1px 2px 2px rgb(50 50 50 / 25%)" >
<igc-column-chooser
id ="columnUI"
height ="100%"
width ="200px"
title ="Column Chooser"
show-all-text ="Show All"
hide-all-text ="Hide All" >
</igc-column-chooser >
</div >
<div class ="container" >
<igc-data-grid
id ="grid"
height ="100%"
width ="100%"
is-column-options-enabled ="true"
auto-generate-columns ="false" >
<igc-text-column field ="ProductID" header-text ="Product ID" width ="*>125" horizontal-alignment ="center" is-hidden ="true" > </igc-text-column >
<igc-image-column field ="CountryFlag" header-text ="Country" width ="*>115" content-opacity ="1" horizontal-alignment ="center"
padding-top ="5" padding-bottom ="5" > </igc-image-column >
<igc-text-column field ="ProductName" header-text ="Product" is-hidden ="true" width ="*>160" > </igc-text-column >
<igc-numeric-column field ="ProductPrice" header-text ="Price" width ="*>90" positive-prefix ="$" show-grouping-separator ="true" min-fraction-digits ="2" is-hidden ="true" > </igc-numeric-column >
<igc-numeric-column field ="OrderItems" header-text ="Orders" width ="*>110" > </igc-numeric-column >
<igc-numeric-column field ="OrderValue" header-text ="Order Value" width ="*>140" positive-prefix ="$" show-grouping-separator ="true" > </igc-numeric-column >
<igc-date-time-column field ="OrderDate" header-text ="Order Date" width ="*>135" horizontal-alignment ="right" date-time-format ="DateShort" > </igc-date-time-column >
<igc-numeric-column field ="Margin" header-text ="Margin" width ="*>110" positive-suffix ="%" horizontal-alignment ="center" is-hidden ="true" > </igc-numeric-column >
<igc-numeric-column field ="Profit" header-text ="Profit" width ="*>90" positive-prefix ="$" show-grouping-separator ="true" is-hidden ="true" > </igc-numeric-column >
<igc-text-column field ="Status" header-text ="Status" width ="*>110" horizontal-alignment ="center" > </igc-text-column >
</igc-data-grid >
</div >
</div >
</div >
<% if (false) { %><script src ="src/index.ts" > </script > <% } %>
</body >
</html >
html コピー
.gridContainer {
height : calc (100% - 20px );
width : calc (100% );
padding : 10px ;
margin : 0px ;
}
.gridOptionsLabel {
font-size : 13px ;
font-family : "Verdana" ;
padding-left : 1rem ;
color : rgb (24 , 29 , 31 );
}
.columnChooserContainer {
margin : 20px ;
min-width : 225px ;
height : 500px ;
display : flex;
flex-direction : column;
padding-left : 15px ;
padding-right : 5px ;
border : 1px gray;
border-radius : 10px ;
box-shadow : 1px 1px 2px 2px rgba (50 , 50 , 50 , 0.25 );
background-color : rgb (248 , 248 , 248 );
}
.columnsOrderOptionsContainer {
margin-top : 20px ;
margin-bottom : 20px ;
}
css コピー
コード スニペット
以下は、データ グリッドの列選択 UI の実装方法を示します。
<igc-column-chooser
id ="columnUI"
height ="100%"
width ="250px"
title ="Column Chooser"
show-all-text ="Show All"
hide-all-text ="Hide All" >
</igc-column-chooser >
<igc-data-grid
id ="grid"
height ="100%"
width ="100%"
data-source ={this.data}
auto-generate-columns ="false"
column-hiding-animation-mode ="SlideOver" >
<igx-text-column is-hidden ="true" field ="ProductPrice" header-text ="Product Price" > <igc-text-column >
</igc-data-grid >
html
import { IgcDataGrid } from 'igniteui-webcomponents-grids' ;
import { IgcColumnChooser } from 'igniteui-webcomponents-grids' ;
import { ColumnMovingAnimationMode } from 'igniteui-webcomponents-grids' ;
private grid: IgcDataGridComponent;
private columnChooser: IgcColumnChooserComponent;
connectedCallback ( ) {
this .columnChooser.targetGrid = this .grid;
this .columnChooser.showAllText = "Show All" ;
this .columnChooser.hideAllText = "Hide All" ;
this .grid.columnMovingAnimationMode = ColumnMovingAnimationMode.SlideOver;
}
ts
API リファレンス