React Tree Grid Row Editing
React 트리 그리드의 Ignite UI for React 행 편집 기능을 사용하면 트리 그리드 내에서 직접 데이터를 편집할 수 있습니다. IgrTreeGrid
. 데이터를 조작하는 이 편리한 방법 외에도 전체 CRUD 작업을 위한 강력한 API가 있습니다. 행을 클릭하고 를 눌러 그리드 행 편집을 수행할 수 있습니다. 엔터 버튼 키 . 또 다른 빠른 방법은 수정해야 하는 행을 마우스로 두 번 클릭하는 것입니다.
React Tree Grid 행 편집 예제
다음 샘플에서는 행 편집을 활성화하는 방법을 보여 줍니다 IgrTreeGrid
. 셀 값을 변경한 다음 동일한 행의 다른 셀을 클릭하거나 탐색하면 완료 단추를 사용하여 확인하거나 취소 단추를 사용하여 삭제할 때까지 행 값이 업데이트되지 않습니다.
export class EmployeesNestedTreeDataItem {
public constructor (init: Partial<EmployeesNestedTreeDataItem> ) {
Object .assign(this , init);
}
public Age: number ;
public HireDate: string ;
public ID: number ;
public Name: string ;
public Phone: string ;
public OnPTO: boolean ;
public ParentID: number ;
public Title: string ;
}
export class EmployeesNestedTreeData extends Array <EmployeesNestedTreeDataItem > {
public constructor (items: Array <EmployeesNestedTreeDataItem> | number = -1 ) {
if (Array .isArray(items)) {
super (...items);
} else {
const newItems = [
new EmployeesNestedTreeDataItem(
{
Age : 55 ,
HireDate : `2008-03-20` ,
ID : 1 ,
Name : `Johnathan Winchester` ,
Phone : `0251-031259` ,
OnPTO : false ,
ParentID : -1 ,
Title : `Development Manager`
}),
new EmployeesNestedTreeDataItem(
{
Age : 42 ,
HireDate : `2014-01-22` ,
ID : 4 ,
Name : `Ana Sanders` ,
Phone : `(21) 555-0091` ,
OnPTO : true ,
ParentID : -1 ,
Title : `CEO`
}),
new EmployeesNestedTreeDataItem(
{
Age : 49 ,
HireDate : `2014-01-22` ,
ID : 18 ,
Name : `Victoria Lincoln` ,
Phone : `(071) 23 67 22 20` ,
OnPTO : true ,
ParentID : -1 ,
Title : `Accounting Manager`
}),
new EmployeesNestedTreeDataItem(
{
Age : 61 ,
HireDate : `2010-01-01` ,
ID : 10 ,
Name : `Yang Wang` ,
Phone : `(21) 555-0091` ,
OnPTO : false ,
ParentID : -1 ,
Title : `Localization Manager`
}),
new EmployeesNestedTreeDataItem(
{
Age : 43 ,
HireDate : `2011-06-03` ,
ID : 3 ,
Name : `Michael Burke` ,
Phone : `0452-076545` ,
OnPTO : true ,
ParentID : 1 ,
Title : `Senior Software Developer`
}),
new EmployeesNestedTreeDataItem(
{
Age : 29 ,
HireDate : `2009-06-19` ,
ID : 2 ,
Name : `Thomas Anderson` ,
Phone : `(14) 555-8122` ,
OnPTO : false ,
ParentID : 1 ,
Title : `Senior Software Developer`
}),
new EmployeesNestedTreeDataItem(
{
Age : 31 ,
HireDate : `2014-08-18` ,
ID : 11 ,
Name : `Monica Reyes` ,
Phone : `7675-3425` ,
OnPTO : false ,
ParentID : 1 ,
Title : `Software Development Team Lead`
}),
new EmployeesNestedTreeDataItem(
{
Age : 35 ,
HireDate : `2015-09-17` ,
ID : 6 ,
Name : `Roland Mendel` ,
Phone : `(505) 555-5939` ,
OnPTO : false ,
ParentID : 11 ,
Title : `Senior Software Developer`
}),
new EmployeesNestedTreeDataItem(
{
Age : 44 ,
HireDate : `2009-10-11` ,
ID : 12 ,
Name : `Sven Cooper` ,
Phone : `0695-34 67 21` ,
OnPTO : true ,
ParentID : 11 ,
Title : `Senior Software Developer`
}),
new EmployeesNestedTreeDataItem(
{
Age : 44 ,
HireDate : `2014-04-04` ,
ID : 14 ,
Name : `Laurence Johnson` ,
Phone : `981-443655` ,
OnPTO : false ,
ParentID : 4 ,
Title : `Director`
}),
new EmployeesNestedTreeDataItem(
{
Age : 25 ,
HireDate : `2017-11-09` ,
ID : 5 ,
Name : `Elizabeth Richards` ,
Phone : `(2) 283-2951` ,
OnPTO : true ,
ParentID : 4 ,
Title : `Vice President`
}),
new EmployeesNestedTreeDataItem(
{
Age : 39 ,
HireDate : `2010-03-22` ,
ID : 13 ,
Name : `Trevor Ashworth` ,
Phone : `981-443655` ,
OnPTO : true ,
ParentID : 5 ,
Title : `Director`
}),
new EmployeesNestedTreeDataItem(
{
Age : 44 ,
HireDate : `2014-04-04` ,
ID : 17 ,
Name : `Antonio Moreno` ,
Phone : `(505) 555-5939` ,
OnPTO : false ,
ParentID : 18 ,
Title : `Senior Accountant`
}),
new EmployeesNestedTreeDataItem(
{
Age : 50 ,
HireDate : `2007-11-18` ,
ID : 7 ,
Name : `Pedro Rodriguez` ,
Phone : `035-640230` ,
OnPTO : false ,
ParentID : 10 ,
Title : `Senior Localization Developer`
}),
new EmployeesNestedTreeDataItem(
{
Age : 27 ,
HireDate : `2016-02-19` ,
ID : 8 ,
Name : `Casey Harper` ,
Phone : `0342-023176` ,
OnPTO : true ,
ParentID : 10 ,
Title : `Senior Localization`
}),
new EmployeesNestedTreeDataItem(
{
Age : 25 ,
HireDate : `2017-11-09` ,
ID : 15 ,
Name : `Patricia Simpson` ,
Phone : `069-0245984` ,
OnPTO : false ,
ParentID : 7 ,
Title : `Localization Intern`
}),
new EmployeesNestedTreeDataItem(
{
Age : 39 ,
HireDate : `2010-03-22` ,
ID : 9 ,
Name : `Francisco Chang` ,
Phone : `(91) 745 6200` ,
OnPTO : false ,
ParentID : 7 ,
Title : `Localization Intern`
}),
new EmployeesNestedTreeDataItem(
{
Age : 25 ,
HireDate : `2018-03-18` ,
ID : 16 ,
Name : `Peter Lewis` ,
Phone : `069-0245984` ,
OnPTO : true ,
ParentID : 7 ,
Title : `Localization Intern`
}),
];
super (...newItems.slice(0 ));
}
}
}
ts コピー import React from 'react' ;
import ReactDOM from 'react-dom/client' ;
import './index.css' ;
import { IgrTreeGridModule } from "@infragistics/igniteui-react-grids" ;
import { IgrTreeGrid, IgrColumn } from "@infragistics/igniteui-react-grids" ;
import { ComponentRenderer, WebTreeGridDescriptionModule } from "@infragistics/igniteui-react-core" ;
import { EmployeesNestedTreeDataItem, EmployeesNestedTreeData } from './EmployeesNestedTreeData' ;
import "@infragistics/igniteui-react-grids/grids/themes/light/bootstrap.css" ;
const mods : any [] = [
IgrTreeGridModule
];
mods.forEach((m) => m.register());
export default class Sample extends React.Component <any, any> {
private treeGrid: IgrTreeGrid
private treeGridRef(r: IgrTreeGrid) {
this .treeGrid = r;
this .setState({});
}
constructor (props: any ) {
super (props);
this .treeGridRef = this .treeGridRef.bind(this );
}
public render (): JSX .Element {
return (
<div className ="container sample ig-typography" >
<div className ="container fill" >
<IgrTreeGrid
autoGenerate ={false}
ref ={this.treeGridRef}
id ="treeGrid"
data ={this.employeesNestedTreeData}
primaryKey ="ID"
foreignKey ="ParentID"
moving ={true}
rowEditable ={true}
rowSelection ="multiple" >
<IgrColumn
field ="Name"
header ="Full Name"
dataType ="string"
resizable ={true}
sortable ={true}
filterable ={true}
editable ={true} >
</IgrColumn >
<IgrColumn
field ="Age"
dataType ="number"
resizable ={false}
sortable ={false}
filterable ={false}
editable ={true} >
</IgrColumn >
<IgrColumn
field ="Title"
dataType ="string"
resizable ={true}
sortable ={true}
filterable ={true}
editable ={true} >
</IgrColumn >
<IgrColumn
field ="HireDate"
header ="Hire Date"
dataType ="date"
resizable ={true}
sortable ={true}
filterable ={true}
editable ={true} >
</IgrColumn >
</IgrTreeGrid >
</div >
</div >
);
}
private _employeesNestedTreeData: EmployeesNestedTreeData = null ;
public get employeesNestedTreeData(): EmployeesNestedTreeData {
if (this ._employeesNestedTreeData == null )
{
this ._employeesNestedTreeData = new EmployeesNestedTreeData();
}
return this ._employeesNestedTreeData;
}
private _componentRenderer: ComponentRenderer = null ;
public get renderer(): ComponentRenderer {
if (this ._componentRenderer == null ) {
this ._componentRenderer = new ComponentRenderer();
var context = this ._componentRenderer.context;
WebTreeGridDescriptionModule.register(context);
}
return this ._componentRenderer;
}
}
const root = ReactDOM.createRoot (document.getElementById('root' ));
root.render (<Sample /> );
tsx コピー
이 샘플이 마음에 드시나요? Ignite UI for React 전체에 액세스하고 몇 분 만에 나만의 앱을 빌드하기 시작하세요. 무료로 다운로드하세요.
행이 편집 모드에 있을 때 다른 행의 셀을 클릭하면 "완료" 버튼을 누른 것처럼 작동하여 이전 행의 모든 변경 사항을 제출합니다. 새로 포커스가 맞춰진 셀을 편집할 수 있는 경우 새 행도 편집 모드로 전환됩니다. 그러나 셀을 편집할 수 없는 경우에는 이전 행만 편집 모드를 종료합니다.
행 편집 사용법
바운드 데이터 소스를 정의 IgrTreeGrid
하고 rowEditable
true로 설정합니다.
<IgrTreeGrid primaryKey ="ID" width ="100%" height ="500px" rowEditable ={true} >
<IgrColumn field ="Name" header ="Name" dataType ="string" > </IgrColumn >
<IgrColumn field ="Age" header ="Age" dataType ="number" > </IgrColumn >
<IgrColumn field ="Title" header ="Title" dataType ="string" > </IgrColumn >
<IgrColumn field ="HireDate" header ="Hire Date" dataType ="date" > </IgrColumn >
</IgrTreeGrid >
tsx
행 편집 작업에는 기본 키 설정이 필수입니다.
개별 열에 대한 편집을 활성화할 필요는 없습니다. IgrTreeGrid의 rowEditable 속성을 사용하면 정의된 필드 속성(기본 행 제외)이 있는 모든 행을 편집할 수 있습니다. 특정 열에 대한 편집을 비활성화하려면 해당 열의 편집 가능한 입력을 false로 설정하기만 하면 됩니다.
IgrTreeGrid는 행 상태가 제출되거나 취소될 때까지 보류 중인 셀 변경 사항을 보유하는 내부 공급자인 BaseTransactionService를 활용합니다.
포지셔닝
오버레이의 기본 위치는 편집 모드에 있는 행 아래에 있습니다.
행 아래에 공간이 없으면 행 위에 오버레이가 나타납니다.
상단 또는 하단에 표시된 오버레이는 오버레이가 닫힐 때까지 스크롤하는 동안 이 위치를 유지합니다.
행동
행이 편집 모드인 경우 동일한 행의 셀을 클릭하면 편집이 계속됩니다.
"완료" 버튼을 클릭하면 행 편집이 완료되고 데이터 소스 또는 가능한 경우 트랜잭션에 변경 사항이 제출됩니다. 또한 행은 편집 모드를 종료합니다.
"취소" 버튼을 클릭하면 행의 현재 변경 사항이 모두 되돌려지고 행은 편집 모드를 종료합니다.
행이 편집 모드인 경우 다른 행의 셀을 클릭하면 현재 행 편집이 완료되고 새 행 변경 사항이 제출됩니다("완료" 버튼을 클릭하는 것과 동일한 동작). 포커스를 받은 새 셀이 편집 가능하면 새 행도 편집 모드로 들어가고, 셀을 편집할 수 없으면 이전 행만 편집 모드에서 나갑니다.
행이 편집 모드에 있고 IgrTreeGrid
행이 보이는 영역 밖으로 나가도록 스크롤되면 후자는 여전히 편집 모드에 있습니다. IgrTreeGrid
행이 다시 표시되도록 스크롤하면 행은 여전히 편집 모드에 있습니다. 외부 IgrTreeGrid
를 클릭하면 셀도 편집 모드로 유지됩니다.
정렬 , 필터링 , 검색 및 숨기기 작업을 수행하면 행의 모든 현재 변경 사항이 되돌려지고 행은 편집 모드를 종료합니다.
페이징 , 크기 조정 , 고정 및 이동 작업을 수행하면 편집 모드가 종료되고 최신 값이 제출됩니다.
수정된 각 셀은 행 편집이 완료될 때까지 스타일이 편집됩니다. 이것은 트랜잭션과 함께 제공되지 않을 때 IgrTreeGrid
의 동작입니다. 트랜잭션을 사용할 수 있는 경우 모든 변경 사항이 커밋될 때까지 셀 편집 스타일이 적용됩니다.
키보드 탐색
Enter를 누르고 F2를 누르면 행 편집 모드로 들어갑니다.
Esc는 행 편집 모드를 종료하고 행이 편집 모드에 있는 동안 수행된 셀 변경 사항을 제출하지 않습니다.
Tab을 사용 하여 행의 편집 가능한 한 셀에서 다음 셀로, 가장 오른쪽의 편집 가능한 셀에서 CANCEL 및 DONE 버튼으로 초점을 이동합니다. 완료 버튼을 통한 탐색은 현재 편집된 행 내에서 편집 가능한 가장 왼쪽 셀로 이동합니다.
기능 통합
모든 데이터 변경 작업은 행 편집 작업을 종료하고 현재 행 변경 사항을 제출합니다. 여기에는 정렬, 그룹화 및 필터링 기준 변경, 페이징 등과 같은 작업이 포함됩니다.
행 편집이 완료된 후 요약이 업데이트됩니다. 정렬, 필터링 등과 같은 다른 기능에도 동일하게 적용됩니다.
행 편집 오버레이 사용자 정의
텍스트 사용자 정의
템플릿을 사용하여 행 편집 오버레이의 텍스트를 사용자 정의할 수 있습니다.
RowChangesCount
속성이 노출되고 변경된 셀 수를 보유합니다.
const rowEditTextTemplate = (ctx: IgrGridRowEditTextTemplateContext) =>{
return (
<>
Changes: {ctx.implicit}
</>
);
}
tsx
템플릿을 통해 행 편집 오버레이의 버튼을 사용자 정의할 수도 있습니다.
const rowEditActionsTemplate =(ctx: IgrGridRowEditActionsTemplateContext) => {
const endRowEdit = ctx.implicit;
return (
<>
<button onClick ={(event) => endRowEdit(false , event)}>Cancel</button >
<button onClick ={(event) => endRowEdit(true , event)}>Apply</button >
</>
);
}
tsx
스타일링
사전 정의된 테마 외에도 사용 가능한 CSS 속성 중 일부를 설정하여 그리드를 추가로 사용자 정의할 수 있습니다. 일부 색상을 변경하려면 먼저 그리드에 대한 클래스를 설정해야 합니다.
<IgrTreeGrid className ="grid" > </IgrTreeGrid >
tsx
그런 다음 해당 클래스에 대한 관련 CSS 속성을 설정합니다.
.grid {
--ig-banner-banner-background : #e3e3e3 ;
--ig-banner-banner-message-color : #423589 ;
}
css
데모
export class EmployeesNestedTreeDataItem {
public constructor (init: Partial<EmployeesNestedTreeDataItem> ) {
Object .assign(this , init);
}
public Age: number ;
public HireDate: string ;
public ID: number ;
public Name: string ;
public Phone: string ;
public OnPTO: boolean ;
public ParentID: number ;
public Title: string ;
}
export class EmployeesNestedTreeData extends Array <EmployeesNestedTreeDataItem > {
public constructor (items: Array <EmployeesNestedTreeDataItem> | number = -1 ) {
if (Array .isArray(items)) {
super (...items);
} else {
const newItems = [
new EmployeesNestedTreeDataItem(
{
Age : 55 ,
HireDate : `2008-03-20` ,
ID : 1 ,
Name : `Johnathan Winchester` ,
Phone : `0251-031259` ,
OnPTO : false ,
ParentID : -1 ,
Title : `Development Manager`
}),
new EmployeesNestedTreeDataItem(
{
Age : 42 ,
HireDate : `2014-01-22` ,
ID : 4 ,
Name : `Ana Sanders` ,
Phone : `(21) 555-0091` ,
OnPTO : true ,
ParentID : -1 ,
Title : `CEO`
}),
new EmployeesNestedTreeDataItem(
{
Age : 49 ,
HireDate : `2014-01-22` ,
ID : 18 ,
Name : `Victoria Lincoln` ,
Phone : `(071) 23 67 22 20` ,
OnPTO : true ,
ParentID : -1 ,
Title : `Accounting Manager`
}),
new EmployeesNestedTreeDataItem(
{
Age : 61 ,
HireDate : `2010-01-01` ,
ID : 10 ,
Name : `Yang Wang` ,
Phone : `(21) 555-0091` ,
OnPTO : false ,
ParentID : -1 ,
Title : `Localization Manager`
}),
new EmployeesNestedTreeDataItem(
{
Age : 43 ,
HireDate : `2011-06-03` ,
ID : 3 ,
Name : `Michael Burke` ,
Phone : `0452-076545` ,
OnPTO : true ,
ParentID : 1 ,
Title : `Senior Software Developer`
}),
new EmployeesNestedTreeDataItem(
{
Age : 29 ,
HireDate : `2009-06-19` ,
ID : 2 ,
Name : `Thomas Anderson` ,
Phone : `(14) 555-8122` ,
OnPTO : false ,
ParentID : 1 ,
Title : `Senior Software Developer`
}),
new EmployeesNestedTreeDataItem(
{
Age : 31 ,
HireDate : `2014-08-18` ,
ID : 11 ,
Name : `Monica Reyes` ,
Phone : `7675-3425` ,
OnPTO : false ,
ParentID : 1 ,
Title : `Software Development Team Lead`
}),
new EmployeesNestedTreeDataItem(
{
Age : 35 ,
HireDate : `2015-09-17` ,
ID : 6 ,
Name : `Roland Mendel` ,
Phone : `(505) 555-5939` ,
OnPTO : false ,
ParentID : 11 ,
Title : `Senior Software Developer`
}),
new EmployeesNestedTreeDataItem(
{
Age : 44 ,
HireDate : `2009-10-11` ,
ID : 12 ,
Name : `Sven Cooper` ,
Phone : `0695-34 67 21` ,
OnPTO : true ,
ParentID : 11 ,
Title : `Senior Software Developer`
}),
new EmployeesNestedTreeDataItem(
{
Age : 44 ,
HireDate : `2014-04-04` ,
ID : 14 ,
Name : `Laurence Johnson` ,
Phone : `981-443655` ,
OnPTO : false ,
ParentID : 4 ,
Title : `Director`
}),
new EmployeesNestedTreeDataItem(
{
Age : 25 ,
HireDate : `2017-11-09` ,
ID : 5 ,
Name : `Elizabeth Richards` ,
Phone : `(2) 283-2951` ,
OnPTO : true ,
ParentID : 4 ,
Title : `Vice President`
}),
new EmployeesNestedTreeDataItem(
{
Age : 39 ,
HireDate : `2010-03-22` ,
ID : 13 ,
Name : `Trevor Ashworth` ,
Phone : `981-443655` ,
OnPTO : true ,
ParentID : 5 ,
Title : `Director`
}),
new EmployeesNestedTreeDataItem(
{
Age : 44 ,
HireDate : `2014-04-04` ,
ID : 17 ,
Name : `Antonio Moreno` ,
Phone : `(505) 555-5939` ,
OnPTO : false ,
ParentID : 18 ,
Title : `Senior Accountant`
}),
new EmployeesNestedTreeDataItem(
{
Age : 50 ,
HireDate : `2007-11-18` ,
ID : 7 ,
Name : `Pedro Rodriguez` ,
Phone : `035-640230` ,
OnPTO : false ,
ParentID : 10 ,
Title : `Senior Localization Developer`
}),
new EmployeesNestedTreeDataItem(
{
Age : 27 ,
HireDate : `2016-02-19` ,
ID : 8 ,
Name : `Casey Harper` ,
Phone : `0342-023176` ,
OnPTO : true ,
ParentID : 10 ,
Title : `Senior Localization`
}),
new EmployeesNestedTreeDataItem(
{
Age : 25 ,
HireDate : `2017-11-09` ,
ID : 15 ,
Name : `Patricia Simpson` ,
Phone : `069-0245984` ,
OnPTO : false ,
ParentID : 7 ,
Title : `Localization Intern`
}),
new EmployeesNestedTreeDataItem(
{
Age : 39 ,
HireDate : `2010-03-22` ,
ID : 9 ,
Name : `Francisco Chang` ,
Phone : `(91) 745 6200` ,
OnPTO : false ,
ParentID : 7 ,
Title : `Localization Intern`
}),
new EmployeesNestedTreeDataItem(
{
Age : 25 ,
HireDate : `2018-03-18` ,
ID : 16 ,
Name : `Peter Lewis` ,
Phone : `069-0245984` ,
OnPTO : true ,
ParentID : 7 ,
Title : `Localization Intern`
}),
];
super (...newItems.slice(0 ));
}
}
}
ts コピー import React from 'react' ;
import ReactDOM from 'react-dom/client' ;
import './index.css' ;
import { IgrTreeGridModule } from "@infragistics/igniteui-react-grids" ;
import { IgrTreeGrid, IgrColumn } from "@infragistics/igniteui-react-grids" ;
import { ComponentRenderer, WebTreeGridDescriptionModule } from "@infragistics/igniteui-react-core" ;
import { EmployeesNestedTreeDataItem, EmployeesNestedTreeData } from './EmployeesNestedTreeData' ;
import "@infragistics/igniteui-react-grids/grids/themes/light/bootstrap.css" ;
const mods : any [] = [
IgrTreeGridModule
];
mods.forEach((m) => m.register());
export default class Sample extends React.Component <any, any> {
private grid: IgrTreeGrid
private gridRef(r: IgrTreeGrid) {
this .grid = r;
this .setState({});
}
constructor (props: any ) {
super (props);
this .gridRef = this .gridRef.bind(this );
}
public render (): JSX .Element {
return (
<div className ="container sample ig-typography" >
<div className ="container fill" >
<IgrTreeGrid
autoGenerate ={false}
ref ={this.gridRef}
id ="grid"
data ={this.employeesNestedTreeData}
primaryKey ="ID"
foreignKey ="ParentID"
moving ={true}
rowEditable ={true}
rowSelection ="multiple" >
<IgrColumn
field ="Name"
header ="Full Name"
dataType ="string"
resizable ={true}
sortable ={true}
filterable ={true}
editable ={true} >
</IgrColumn >
<IgrColumn
field ="Age"
dataType ="number"
resizable ={false}
sortable ={false}
filterable ={false}
editable ={true} >
</IgrColumn >
<IgrColumn
field ="Title"
dataType ="string"
resizable ={true}
sortable ={true}
filterable ={true}
editable ={true} >
</IgrColumn >
<IgrColumn
field ="HireDate"
header ="Hire Date"
dataType ="date"
resizable ={true}
sortable ={true}
filterable ={true}
editable ={true} >
</IgrColumn >
</IgrTreeGrid >
</div >
</div >
);
}
private _employeesNestedTreeData: EmployeesNestedTreeData = null ;
public get employeesNestedTreeData(): EmployeesNestedTreeData {
if (this ._employeesNestedTreeData == null )
{
this ._employeesNestedTreeData = new EmployeesNestedTreeData();
}
return this ._employeesNestedTreeData;
}
private _componentRenderer: ComponentRenderer = null ;
public get renderer(): ComponentRenderer {
if (this ._componentRenderer == null ) {
this ._componentRenderer = new ComponentRenderer();
var context = this ._componentRenderer.context;
WebTreeGridDescriptionModule.register(context);
}
return this ._componentRenderer;
}
}
const root = ReactDOM.createRoot (document.getElementById('root' ));
root.render (<Sample /> );
tsx コピー
#grid {
--ig-banner-banner-background : #292826 ;
--ig-banner-banner-message-color : #ffcd0f ;
--ig-button -foreground: #ffcd0f ;
--ig-button -hover-foreground: white;
--ig-button -font-weight : 600 ;
}
css コピー
알려진 문제 및 제한 사항
그리드에 primaryKey
설정되지 않고 원격 데이터 시나리오가 활성화된 경우(그리드에 표시할 데이터를 검색하기 위해 원격 서버에 대한 페이징, 정렬, 필터링, 스크롤 트리거 요청 시) 행은 데이터 이후 다음 상태를 잃습니다. 요청이 완료되었습니다:
API 참조
추가 리소스
우리 커뮤니티는 활동적이며 항상 새로운 아이디어를 환영합니다.