React 계층형 그리드의 행 동작
React Hierarchical Grid의 Ignite UI for React 사용하면 개발자가 IgrActionStrip
을 사용하고 행/셀 구성 요소와 행 고정을 위한 CRUD를 활용할 수 있습니다. IgrHierarchicalGrid
의 특정 행에 적용할 수 있는 이러한 작업에 대한 여러 가지 미리 정의된 UI 컨트롤이 있습니다. 편집 및 고정입니다.
용법
사전 정의된 작업 UI 구성 요소는 다음과 같습니다.
그것들은 내부에 IgrHierarchicalGrid
추가되며 이것은 모두 기본 상호 작용을 IgrActionStrip
제공하는 데 필요합니다.
<IgrHierarchicalGrid rowEditable ={true} primaryKey ="ID" >
<IgrColumn field ="field" >
</IgrColumn >
<IgrActionStrip >
<IgrGridPinningActions > </IgrGridPinningActions >
<IgrGridEditingActions > </IgrGridEditingActions >
</IgrActionStrip >
</IgrHierarchicalGrid >
tsx
ActionStripComponent가 IgrHierarchicalGrid의 하위 구성 요소인 경우 행을 가리키면 UI가 자동으로 표시됩니다.
사용자 지정 구현
이러한 구성 요소는 사용자 지정을 위한 유연성을 제공하는 템플릿을 노출합니다. 예를 들어, 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 コピー
API 참조
우리 커뮤니티는 활동적이며 항상 새로운 아이디어를 환영합니다.