React Hierarchical Grid の行操作
React Hierarchical Grid の Ignite UI for React 行操作機能を使用すると、開発者は IgrActionStrip
を使用し、行/セル コンポーネントと行のピン固定に CRUD を利用できます。これらの操作 (編集とピン固定) には、IgrHierarchicalGrid
の特定の行に適用できる事前定義された UI コントロールがいくつかあります。
使用方法
事前定義された操作 (actions) UI コンポーネントは次のとおりです:
これらは IgrHierarchicalGrid
内に追加され、デフォルトのインタラクションを提供する IgrActionStrip
プを持つために必要です。
<IgrHierarchicalGrid id="hierarchicalGrid" rowEditable="true" primaryKey="ID">
<IgrColumn field="field">
</IgrColumn>
<IgrActionStrip name="actionStrip">
<IgrGridPinningActions></IgrGridPinningActions>
<IgrGridEditingActions></IgrGridEditingActions>
</IgrActionStrip>
</IgrHierarchicalGrid>
tsx
ActionStripComponent が IgrHierarchicalGrid の子コンポーネントの場合、行をホバーすると UI が自動的に表示されます。
カスタムの実装
これらのコンポーネントは、カスタマイズのための柔軟性を提供するテンプレートを公開します。たとえば、delete、edit などの行アクションがある Gmail シナリオで IgrActionStrip
を使用する場合、アイコンでボタン コンポーネントを作成します。そして、クリック イベントを追加し、IgrActionStrip
に挿入します。
<IgrHierarchicalGrid>
<IgrActionStrip name="actionStrip">
<IgrGridPinningActions></IgrGridPinningActions>
<IgrGridEditingActions editRow="true" deleteRow="true"></IgrGridEditingActions>
</IgrActionStrip>
</IgrHierarchicalGrid>
tsx
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import { IgrHierarchicalGridModule } from "@infragistics/igniteui-react-grids";
import { IgrHierarchicalGrid, IgrPinningConfig, RowPinningPosition, IgrActionStrip, IgrGridPinningActions, IgrGridEditingActions, IgrColumn, IgrRowIsland } from "@infragistics/igniteui-react-grids";
import SingersData from './SingersData.json';
import "@infragistics/igniteui-react-grids/grids/combined";
import "@infragistics/igniteui-react-grids/grids/themes/light/bootstrap.css";
const mods: any[] = [
IgrHierarchicalGridModule
];
mods.forEach((m) => m.register());
export default class Sample extends React.Component<any, any> {
private hierarchicalGrid1: IgrHierarchicalGrid
private hierarchicalGrid1Ref(r: IgrHierarchicalGrid) {
this.hierarchicalGrid1 = r;
this.setState({});
}
private _pinningConfig1: IgrPinningConfig | null = null;
public get pinningConfig1(): IgrPinningConfig {
if (this._pinningConfig1 == null)
{
var pinningConfig1: IgrPinningConfig = {} as IgrPinningConfig;
pinningConfig1.rows = RowPinningPosition.Top;
this._pinningConfig1 = pinningConfig1;
}
return this._pinningConfig1;
}
private actionStrip: IgrActionStrip
constructor(props: any) {
super(props);
this.hierarchicalGrid1Ref = this.hierarchicalGrid1Ref.bind(this);
}
public render(): JSX.Element {
return (
<div className="container sample ig-typography">
<div className="container fill">
<IgrHierarchicalGrid
autoGenerate={false}
data={this.singersData}
primaryKey="ID"
rowEditable={true}
allowFiltering={true}
pinning={this.pinningConfig1}
ref={this.hierarchicalGrid1Ref}>
<IgrActionStrip
name="actionStrip">
<IgrGridPinningActions
>
</IgrGridPinningActions>
<IgrGridEditingActions
editRow={true}
deleteRow={true}
addRow={true}>
</IgrGridEditingActions>
</IgrActionStrip>
<IgrColumn
field="Artist"
header="Artist"
dataType="string"
sortable={true}>
</IgrColumn>
<IgrColumn
field="Photo"
header="Photo"
dataType="image"
sortable={true}>
</IgrColumn>
<IgrColumn
field="Debut"
header="Debut"
dataType="number"
sortable={true}>
</IgrColumn>
<IgrColumn
field="GrammyNominations"
header="Grammy Nominations"
dataType="number"
sortable={true}>
</IgrColumn>
<IgrColumn
field="GrammyAwards"
header="Grammy Awards"
dataType="number"
sortable={true}>
</IgrColumn>
<IgrRowIsland
childDataKey="Albums"
autoGenerate={false}>
<IgrColumn
field="Album"
header="Album"
dataType="string"
sortable={true}>
</IgrColumn>
<IgrColumn
field="LaunchDate"
header="Launch Date"
dataType="date"
sortable={true}>
</IgrColumn>
<IgrColumn
field="BillboardReview"
header="Billboard Review"
dataType="string"
sortable={true}>
</IgrColumn>
<IgrColumn
field="USBillboard200"
header="US Billboard 200"
dataType="string"
sortable={true}>
</IgrColumn>
<IgrRowIsland
childDataKey="Songs"
autoGenerate={false}>
<IgrColumn
field="Number"
header="No."
dataType="string">
</IgrColumn>
<IgrColumn
field="Title"
header="Title"
dataType="string">
</IgrColumn>
<IgrColumn
field="Released"
header="Released"
dataType="date">
</IgrColumn>
<IgrColumn
field="Genre"
header="Genre"
dataType="string">
</IgrColumn>
</IgrRowIsland>
</IgrRowIsland>
<IgrRowIsland
childDataKey="Tours"
autoGenerate={false}>
<IgrColumn
field="Tour"
header="Tour"
dataType="string">
</IgrColumn>
<IgrColumn
field="StartedOn"
header="Started on"
dataType="string">
</IgrColumn>
<IgrColumn
field="Location"
header="Location"
dataType="string">
</IgrColumn>
<IgrColumn
field="Headliner"
header="Headliner"
dataType="string">
</IgrColumn>
</IgrRowIsland>
</IgrHierarchicalGrid>
</div>
</div>
);
}
private _singersData: any[] = SingersData;
public get singersData(): any[] {
return this._singersData;
}
}
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<Sample/>);
tsx
このサンプルが気に入りましたか? 完全な Ignite UI for Reactツールキットにアクセスして、すばやく独自のアプリの作成を開始します。無料でダウンロードできます。
API リファレンス
コミュニティに参加して新しいアイデアをご提案ください。