React 계층형 그리드의 행 동작
React Hierarchical Grid의 Ignite UI for React 사용하면 개발자가 IgrActionStrip
을 사용하고 행/셀 구성 요소와 행 고정을 위한 CRUD를 활용할 수 있습니다. IgrHierarchicalGrid
의 특정 행에 적용할 수 있는 이러한 작업에 대한 여러 가지 미리 정의된 UI 컨트롤이 있습니다. 편집 및 고정입니다.
Usage
사전 정의된 작업 UI 구성 요소는 다음과 같습니다.
그것들은 내부에 IgrHierarchicalGrid
추가되며 이것은 모두 기본 상호 작용을 IgrActionStrip
제공하는 데 필요합니다.
<IgrHierarchicalGrid rowEditable ={true} primaryKey ="ID" >
<IgrColumn field ="field" >
</IgrColumn >
<IgrActionStrip >
<IgrGridPinningActions > </IgrGridPinningActions >
<IgrGridEditingActions > </IgrGridEditingActions >
</IgrActionStrip >
</IgrHierarchicalGrid >
tsx
When ActionStripComponent is a child component of the IgrHierarchicalGrid, hovering a row will automatically show the UI.
Custom Implementation
이러한 구성 요소는 사용자 지정을 위한 유연성을 제공하는 템플릿을 노출합니다. 예를 들어, IgrActionStrip
다음과 같은 행 작업이 있는 Gmail 시나리오의 경우 삭제하다 , 편집하다 그리고 등등. 아이콘으로 버튼 구성 요소를 만들고 클릭 이벤트를 추가하고 삽입 할 수 있습니다. IgrActionStrip
.
<IgrHierarchicalGrid >
<IgrActionStrip >
<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/themes/light/bootstrap.css" ;
const mods : any [] = [
IgrHierarchicalGridModule
];
mods.forEach((m) => m.register());
export default class Sample extends React.Component <any, any> {
private hierarchicalGrid: IgrHierarchicalGrid
private hierarchicalGridRef(r: IgrHierarchicalGrid) {
this .hierarchicalGrid = 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
private column: IgrColumn
private rowIsland: IgrRowIsland
constructor (props: any ) {
super (props);
this .hierarchicalGridRef = this .hierarchicalGridRef.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} >
<IgrActionStrip
>
<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 コピー
Like this sample? Get access to our complete Ignite UI for React toolkit and start building your own apps in minutes. Download it for free.
API References
우리 커뮤니티는 활동적이며 항상 새로운 아이디어를 환영합니다.