Syncfusion React Grid
The Syncfusion React Grid is a comprehensive, feature-rich component for displaying and manipulating tabular data. It provides extensive functionality for data binding, paging, sorting, filtering, grouping, editing, exporting, scrolling modes, row/column customization, and advanced state management to handle datasets of any size and complexity efficiently.
⚠️ Security & Trust Boundary
- The Grid skill does not perform any remote data access.
- All external API interaction is handled by a separate DataManager skill outside this skill’s trust boundary.
Table of Contents
When to Use This Skill
Use the Syncfusion React Grid when you need to:
- Display tabular data with rows and columns in a React application
- Handle large datasets efficiently with paging, virtual scrolling, or infinite scrolling
- Enable sorting, filtering, and searching for single or multiple columns
- Edit data inline with multiple edit modes (Inline, Batch, Dialog)
- Export data to Excel or PDF formats with customization
- Group and aggregate data with summaries and calculations
- Customize rows and cells with templates and styling
- Manage complex column configurations (frozen columns, spanning, reordering, resizing)
- Optimize performance when rendering thousands of records
- Persist grid state for user preferences and configuration
- Provide responsive data views for different screen sizes
Component Overview
The Grid component provides:
- Data Binding: Support for local arrays, remote data sources, and DataManager integration
- Paging: Client-side pagination with customizable page size and navigation
- Sorting: Single and multi-column sorting with custom comparers
- Filtering: Multiple filter modes (Filter Bar, Filter Menu, Excel-like filter)
- Searching: Global search across columns
- Grouping: Group data by columns with aggregates and lazy loading
- Selection: Row, cell, and column selection with checkbox support
- Editing: Inline, Batch, and Dialog modes with validation and templates
- Aggregates: Sum, Average, Count, Min, Max with footer, group, and caption display
- Exporting: Excel and PDF export with templates and server-side support
- Scrolling: Standard, Virtual, and Infinite scrolling modes
- Row Customization: Templates, detail views, drag-drop, pinning, spanning
- Column Customization: Templates, resizing, reordering, freezing, spanning
- Performance: Optimized rendering for large datasets
- Responsive Design: Adaptive layouts for different screen sizes
- Module System: Feature-based modules to reduce bundle size
Mandatory Rules for Inbuilt API
CRITICAL: Follow these rules when using Grid's inbuilt API (137+ methods, 65+ events, 95+ properties):
Rule 1: Module Injection Required for Feature Methods
Methods only work if their module is injected. No error thrown if module missing.
| Method |
Required Module |
Example |
goToPage() |
Page |
<Inject services={[Page]} /> |
sortColumn() |
Sort |
<Inject services={[Sort]} /> |
filterByColumn() |
Filter |
<Inject services={[Filter]} /> |
addRecord(), deleteRecord() |
Edit |
<Inject services={[Edit]} /> |
Rule 2: Properties vs Methods - Know the Difference
- Properties: Set via JSX props (
<GridComponent allowPaging={true} />)
- Methods: Call via ref (
gridRef.current.goToPage(2))
- Can't set properties via methods or call methods via props
📄 Full Properties API Reference: references/properties-configuration.md
📄 Full Methods API Reference: references/programmatic-api.md
📄 Full Events API Reference: references/events-catalog.md
📄 Backend Integration: references/adaptors.md
Feature Navigation Guide
Getting Started & Setup
📄 Read: references/getting-started.md
- Installation and package setup
- Basic component initialization
- CSS imports and theme configuration
- Simple data binding example
- Module injection
Data Management
📄 Read: references/data-binding.md
- Local data binding with arrays
- Remote data with DataManager
- Loading indicators (Spinner, Shimmer)
- Data source configuration
Column Configuration
📄 Read: references/columns.md
- Column definition and properties
- Column types (string, number, date, boolean, checkbox)
- Column width and auto-fit
- Column templates and custom rendering
- Column features (spanning, reordering, resizing, freezing)
Aggregation & Summaries
📄 Read: references/aggregates.md
- Footer aggregates (Sum, Avg, Count, Min, Max, etc.)
- Group footer aggregates
- Group caption aggregates
- Custom aggregate functions
- Reactive aggregate updates
Navigation & Pagination
📄 Read: references/paging.md
- Enable and configure paging
- Page size and navigation
- Page change events
- Customizing pager UI
- Query string integration
Sorting Data
📄 Read: references/sorting.md
- Single and multi-column sorting
- Sort direction control
- Initial sort configuration
- Custom comparers
- Prevent sorting for specific columns
Filtering
Start here: 📄 Read references/filter-setup.md — Enable filtering, choose filter type (FilterBar, Menu, Excel, CheckBox)
Choose your type:
- 📄 Read references/filter-types.md — All 3 filter types: FilterBar (inline text), Menu (operators), Excel (checkboxes)
- 📄 Read references/filter-operators.md — All 21+ operators, syntax, wildcards, AND/OR logic
Searching
📄 Read: references/searching.md
- Grid search functionality
- Global search across columns
- Search with filter integration
- Case-sensitive search options
Grouping Data
📄 Read: references/grouping.md
- Enable grouping by columns
- Group by multiple columns
- Caption templates
- Group footer aggregates
- Lazy-load grouping for performance
Selection
📄 Read: references/selection.md
- Row, cell, column selection modes
- Checkbox selection
- Multiple selection handling
- Selection events and methods
- Programmatic selection
Editing
📄 Read: references/editing.md
- Enable editing (allowEditing, allowAdding, allowDeleting)
- Edit modes: Inline, Batch, Dialog
- Edit triggers (double-click, toolbar, keyboard)
- Custom edit templates
- Validation rules and error handling
- Primary key configuration
⚠️ isPrimaryKey={true} is required on the key column — editing silently fails without it.
Row Features
📄 Read: references/row.md
- Row templates
- Detail templates (expand/collapse)
- Row drag and drop
- Row pinning
- Row spanning
- Row selection and events
Exporting
📄 Read: references/excel-export.md
- Basic Excel export functionality
- Export options and configuration
- Exporting with column templates
- Server-side export
- Formatting and styling in exports
📄 Read: references/pdf-export.md
- PDF export setup
- Headers and footers
- Export options and customization
- Exporting with templates
- Server-side PDF export
- Page orientation and sizing
Scrolling Modes
📄 Read: references/scrolling.md
- Standard scrolling
- Virtual scrolling (performance optimization)
- Infinite scrolling
- Scrollbar customization
- Height and width configuration
⚠️ height is required — scroll is silently disabled without it. Do NOT combine with allowPaging in virtual scrolling and infinite scrolling.
| Rows |
Mode |
Key Config |
| < 1,000 |
allowPaging |
Page module |
| 1K – 100K |
enableVirtualization + height |
VirtualScroll, no paging |
| Continuous |
enableInfiniteScrolling + height |
InfiniteScroll |
| 100K+ grouped |
enableVirtualization + lazyLoadGrouping |
VirtualScroll, Group |
Freezing & Pinning
📄 Read: references/frozen.md
- Freeze columns
- Freeze rows
- Freeze headers
- Row pinning
- Frozen column behavior
Toolbar
📄 Read: references/toolbar.md
- Built-in toolbar items
- Custom toolbar buttons
- Toolbar icons and events
- Edit toolbar integration
- Toolbar item templates
Context Menu
📄 Read: references/context-menu.md
- Built-in context menu items
- Custom context menus
- Context menu configuration
- Context menu events
Cell Operations
📄 Read: references/cell.md
- Cell editing and selection
- Cell templates
- Cell value formatting
- Cell ranges and operations
- Cell focus and navigation
📄 Read: references/clipboard.md
- Copy and paste functionality
- Clipboard events
- Custom clipboard actions
- Copy column headers
- Paste from external sources
Printing
📄 Read: references/print.md
- Print grid
- Print templates
- Print customization
- Print specific rows/columns
- Print orientation and sizing
Styling & Appearance
📄 Read: references/style-and-appearance.md
- CSS customization
- Themes (Material, Bootstrap, Fabric)
- Dark mode support
- Inline styling and classes
- Custom color schemes
- Component size modes
⚠️ rowDataBound and queryCellInfo fire on every render — no API calls inside them.
❌ Never add both a column template and a rowDataBound handler targeting the same field — this produces duplicate, conflicting styling logic.
Hierarchy & Nested Data
📄 Read: references/hierarchy-grid.md
- Parent-child data structures
- Child grid
- Expand and collapse behavior
- Nested grid templates
- Detail row templates
- Hierarchical data configuration
Adaptive Mode
📄 Read: references/adaptive.md
- enableAdaptiveUI: Render filter, sort, column chooser, and edit dialogs in full-screen mode for better mobile usability. Apply
e-bigger class to parent element.
- Vertical row rendering: Set
rowRenderingMode="Vertical" to display row elements vertically instead of horizontally (default is Horizontal).
- Vertical rendering features: Supports paging, sorting, filtering, selection, dialog editing, aggregates, infinite scroll, and toolbar options.
- rowRenderingMode note: Column Menu (grouping, sorting, autofit, filter, column chooser) only works in Horizontal mode.
- AdaptiveUIMode property: Use
"Mobile" to render adaptive layout only on mobile screens, or "Both" (default) for both mobile and desktop.
- Mobile screen optimization: Render adaptive dialogs and vertical layouts automatically when enableAdaptiveUI is enabled.
Configuration Management
📄 Read: references/global-local.md
- Global grid settings
- Local column configuration
- Configuration precedence
- Configuration merging
📄 Read: references/state-management.md
- Persist grid state
- Save and restore grid state manually
- Restore grid to initial state
- Prevent specific properties from persisting
- Persist column templates and header text
⚠️ Rule: enablePersistence={true} must be enable when use state management in grid.
Module System & Architecture
📄 Read: references/modules.md
- Grid module architecture and feature-based modules
- 30+ available modules and their dependencies
- Module injection patterns
- Feature-module mapping
- Bundle optimization and lazy loading
- Conditional module loading
- Every feature in the Syncfusion React Grid requires explicit module injection via
<Inject services={[...]} />. Without injection, the feature is silently ignored — no error is thrown.
⚠️ Rule: <Inject services={[...]} /> must be the last child inside <GridComponent>.
Data Connectivity & Adaptors
📄 Read: references/adaptors.md
- 7 adaptor types for backend integration
- UrlAdaptor, ODataV4Adaptor, WebApiAdaptor, GraphQLAdaptor
- Custom adaptors and RemoteSaveAdaptor
- Backend configuration examples (C#, Node.js)
- Request/response format specifications
- Error handling and adaptor comparison
Performance Optimization
📄 Read: references/performance.md
- Virtual scrolling for 10,000+ records
- Infinite scrolling and progressive loading
- Memory management and cleanup strategies
- Bundle size optimization
- Event debouncing and throttling
- Performance benchmarking and monitoring
Accessibility & Compliance
📄 Read: references/accessibility.md
- WCAG 2.2 and Section 508 compliance
- WAI-ARIA implementation and screen readers
- Keyboard navigation (Tab, arrows, Enter, Escape)
- Color contrast and focus management
- Accessibility testing tools (axe, NVDA, JAWS)
- Semantic HTML practices
Data Validation
📄 Read: references/validation.md
- Built-in validators (required, min, max, pattern)
- Custom validation functions
- Async validation with server checks
- Validation events and error display
- Server-side validation with ASP.NET
- Validation rules by column type
Command Column & Row Actions
📄 Read: references/command-column.md
- Built-in commands (Edit, Delete, Save, Cancel)
- Custom command buttons
- Role-based and status-based commands
- Command click events
- Conditional command visibility
- CSS styling and icons
Localization & Internationalization
📄 Read: references/localization.md
- Multi-language support (60+ languages)
- Locale setup and culture configuration
- Number, date, and currency formatting
- RTL support (Arabic, Hebrew, Farsi)
- Custom localization and translation
- Language switcher implementation
Responsive Design & Mobile
📄 Read: references/responsive-design.md
- Adaptive UI for mobile/tablet/desktop
- Responsive media queries and breakpoints
- Column visibility hiding rules
- Touch interactions (swipe, long-press)
- Mobile optimization strategies
- Device-specific styling patterns
API Reference & Properties
📄 Read: references/properties-configuration.md
- All 95+ configurable properties organized by category
- Quick reference table for quick lookup
- When to use each property
- Module requirements per property
Programmatic Control (Methods)
📄 Read: references/programmatic-api.md
- All 137+ Grid methods by category (data, row, column, sort, filter, group, page, edit, export)
- Method signatures and parameters
- Return values and usage patterns
- Module requirements per method
Event Communication (Events)
📄 Read: references/events-catalog.md
- All 65+ Grid events with timing and use cases
- Wire
actionBegin to cancel or mutate before an action (args.cancel = true, args.data.field = value)
- Wire
actionComplete to react after (API call, toast, refresh, toolbar restore)
- Must wire
actionFailure for error handling
- Use
args.requestType to identify the action
Advanced Patterns & Real-World Scenarios
📄 Real-Time Updates: references/real-time-updates.md
- Auto-refresh, WebSocket, and SignalR integration patterns
- Push vs. pull data strategies
- Connection management and reconnection logic
📄 Performance Monitoring: references/performance-monitoring.md
- Measure grid operation times
- Identify rendering bottlenecks
- Optimization checklist
- Memory usage tracking
📄 Testing Grids: references/testing-grids.md
- Unit testing with Jest and React Testing Library
- Integration testing scenarios
- Snapshot testing
- Best practices for grid testing
Quick Start Example
import { ColumnDirective, ColumnsDirective, GridComponent, Inject, Page, Sort, Filter } from '@syncfusion/ej2-react-grids';
import React from 'react';
import '../styles/App.css';
const gridRef = useRef<GridComponent | null>(null);
// Sample data
const data = [
{
OrderID: 10248,
CustomerID: 'VINET',
EmployeeID: 5,
OrderDate: new Date(1996, 6, 4)
},
{
OrderID: 10249,
CustomerID: 'TOMSP',
EmployeeID: 6,
OrderDate: new Date(1996, 6, 5)
},
];
function App() {
return (
<GridComponent
ref={gridRef}
dataSource={data}
allowPaging={true}
allowSorting={true}
allowFiltering={true}
pageSettings={{ pageSize: 10 }}
>
<ColumnsDirective>
<ColumnDirective field='OrderID' headerText='Order ID' width='100' textAlign='Right' />
<ColumnDirective field='CustomerID' headerText='Customer' width='120' />
<ColumnDirective field='OrderDate' headerText='Order Date' width='130' type='date' format='yMd' />
</ColumnsDirective>
<Inject services={[Page, Sort, Filter]} />
</GridComponent>
);
}
export default App;
1---2name: syncfusion-react-grid3description: Implements Syncfusion React Grid component for feature-rich data tables and grids. Use this when working with data display, sorting, filtering, grouping, aggregates, editing, or exporting. This skill covers grid configuration, CRUD operations, virtual scrolling or infinite scrolling, hierarchy grids, state persistence, and advanced data management features for data-intensive applications.4---5
6# Syncfusion React Grid
7
8The Syncfusion React Grid is a comprehensive, feature-rich component for displaying and manipulating tabular data. It provides extensive functionality for data binding, paging, sorting, filtering, grouping, editing, exporting, scrolling modes, row/column customization, and advanced state management to handle datasets of any size and complexity efficiently.
9
10## ⚠️ Security & Trust Boundary
11
12- The Grid skill does not perform any remote data access.
13- All external API interaction is handled by a separate DataManager skill outside this skill’s trust boundary.
14
15## Table of Contents
16- [When to Use This Skill](#when-to-use-this-skill)
17- [Component Overview](#component-overview)
18- [Mandatory Rules for Inbuilt API](#mandatory-rules-for-inbuilt-api)
19- [Feature/Skill Navigation Guide](#feature-navigation-guide)
20- [Quick Start Example](#quick-start-example)
21
22## When to Use This Skill
23
24Use the Syncfusion React Grid when you need to:
25
26- **Display tabular data** with rows and columns in a React application
27- **Handle large datasets** efficiently with paging, virtual scrolling, or infinite scrolling
28- **Enable sorting, filtering, and searching** for single or multiple columns
29- **Edit data inline** with multiple edit modes (Inline, Batch, Dialog)
30- **Export data** to Excel or PDF formats with customization
31- **Group and aggregate data** with summaries and calculations
32- **Customize rows and cells** with templates and styling
33- **Manage complex column configurations** (frozen columns, spanning, reordering, resizing)
34- **Optimize performance** when rendering thousands of records
35- **Persist grid state** for user preferences and configuration
36- **Provide responsive data views** for different screen sizes
37
38## Component Overview
39
40The Grid component provides:
41
42- **Data Binding**: Support for local arrays, remote data sources, and DataManager integration
43- **Paging**: Client-side pagination with customizable page size and navigation
44- **Sorting**: Single and multi-column sorting with custom comparers
45- **Filtering**: Multiple filter modes (Filter Bar, Filter Menu, Excel-like filter)
46- **Searching**: Global search across columns
47- **Grouping**: Group data by columns with aggregates and lazy loading
48- **Selection**: Row, cell, and column selection with checkbox support
49- **Editing**: Inline, Batch, and Dialog modes with validation and templates
50- **Aggregates**: Sum, Average, Count, Min, Max with footer, group, and caption display
51- **Exporting**: Excel and PDF export with templates and server-side support
52- **Scrolling**: Standard, Virtual, and Infinite scrolling modes
53- **Row Customization**: Templates, detail views, drag-drop, pinning, spanning
54- **Column Customization**: Templates, resizing, reordering, freezing, spanning
55- **Performance**: Optimized rendering for large datasets
56- **Responsive Design**: Adaptive layouts for different screen sizes
57- **Module System**: Feature-based modules to reduce bundle size
58
59## Mandatory Rules for Inbuilt API
60
61**CRITICAL**: Follow these rules when using Grid's inbuilt API (137+ methods, 65+ events, 95+ properties):
62
63### Rule 1: Module Injection Required for Feature Methods
64Methods only work if their module is injected. No error thrown if module missing.
65
66| Method | Required Module | Example |
67|--------|----------------|---------|
68| `goToPage()` | `Page` | `<Inject services={[Page]} />` |
69| `sortColumn()` | `Sort` | `<Inject services={[Sort]} />` |
70| `filterByColumn()` | `Filter` | `<Inject services={[Filter]} />` |
71| `addRecord()`, `deleteRecord()` | `Edit` | `<Inject services={[Edit]} />` |
72
73### Rule 2: Properties vs Methods - Know the Difference
74- **Properties**: Set via JSX props (`<GridComponent allowPaging={true} />`)
75- **Methods**: Call via ref (`gridRef.current.goToPage(2)`)
76- Can't set properties via methods or call methods via props
77
78---
79
80📄 **Full Properties API Reference:** [references/properties-configuration.md](references/properties-configuration.md)
81📄 **Full Methods API Reference:** [references/programmatic-api.md](references/programmatic-api.md)
82📄 **Full Events API Reference:** [references/events-catalog.md](references/events-catalog.md)
83📄 **Backend Integration:** [references/adaptors.md](references/adaptors.md)
84
85---
86
87## Feature Navigation Guide
88
89### Getting Started & Setup
90📄 **Read:** [references/getting-started.md](references/getting-started.md)
91- Installation and package setup
92- Basic component initialization
93- CSS imports and theme configuration
94- Simple data binding example
95- Module injection
96
97### Data Management
98📄 **Read:** [references/data-binding.md](references/data-binding.md)
99- Local data binding with arrays
100- Remote data with DataManager
101- Loading indicators (Spinner, Shimmer)
102- Data source configuration
103
104### Column Configuration
105📄 **Read:** [references/columns.md](references/columns.md)
106- Column definition and properties
107- Column types (string, number, date, boolean, checkbox)
108- Column width and auto-fit
109- Column templates and custom rendering
110- Column features (spanning, reordering, resizing, freezing)
111
112### Aggregation & Summaries
113📄 **Read:** [references/aggregates.md](references/aggregates.md)
114- Footer aggregates (Sum, Avg, Count, Min, Max, etc.)
115- Group footer aggregates
116- Group caption aggregates
117- Custom aggregate functions
118- Reactive aggregate updates
119
120### Navigation & Pagination
121📄 **Read:** [references/paging.md](references/paging.md)
122- Enable and configure paging
123- Page size and navigation
124- Page change events
125- Customizing pager UI
126- Query string integration
127
128### Sorting Data
129📄 **Read:** [references/sorting.md](references/sorting.md)
130- Single and multi-column sorting
131- Sort direction control
132- Initial sort configuration
133- Custom comparers
134- Prevent sorting for specific columns
135
136### Filtering
137
138**Start here:** 📄 Read [references/filter-setup.md](references/filter-setup.md) — Enable filtering, choose filter type (FilterBar, Menu, Excel, CheckBox)
139
140**Choose your type:**
141- 📄 Read [references/filter-types.md](references/filter-types.md) — All 3 filter types: FilterBar (inline text), Menu (operators), Excel (checkboxes)
142- 📄 Read [references/filter-operators.md](references/filter-operators.md) — All 21+ operators, syntax, wildcards, AND/OR logic
143
144### Searching
145
146📄 **Read:** [references/searching.md](references/searching.md)
147- Grid search functionality
148- Global search across columns
149- Search with filter integration
150- Case-sensitive search options
151
152### Grouping Data
153📄 **Read:** [references/grouping.md](references/grouping.md)
154- Enable grouping by columns
155- Group by multiple columns
156- Caption templates
157- Group footer aggregates
158- Lazy-load grouping for performance
159
160### Selection
161📄 **Read:** [references/selection.md](references/selection.md)
162- Row, cell, column selection modes
163- Checkbox selection
164- Multiple selection handling
165- Selection events and methods
166- Programmatic selection
167
168### Editing
169📄 **Read:** [references/editing.md](references/editing.md)
170- Enable editing (allowEditing, allowAdding, allowDeleting)
171- Edit modes: Inline, Batch, Dialog
172- Edit triggers (double-click, toolbar, keyboard)
173- Custom edit templates
174- Validation rules and error handling
175- Primary key configuration
176
177> ⚠️ `isPrimaryKey={true}` is required on the key column — editing silently fails without it.
178
179### Row Features
180📄 **Read:** [references/row.md](references/row.md)
181- Row templates
182- Detail templates (expand/collapse)
183- Row drag and drop
184- Row pinning
185- Row spanning
186- Row selection and events
187
188### Exporting
189📄 **Read:** [references/excel-export.md](references/excel-export.md)
190- Basic Excel export functionality
191- Export options and configuration
192- Exporting with column templates
193- Server-side export
194- Formatting and styling in exports
195
196📄 **Read:** [references/pdf-export.md](references/pdf-export.md)
197- PDF export setup
198- Headers and footers
199- Export options and customization
200- Exporting with templates
201- Server-side PDF export
202- Page orientation and sizing
203
204### Scrolling Modes
205📄 **Read:** [references/scrolling.md](references/scrolling.md)
206- Standard scrolling
207- Virtual scrolling (performance optimization)
208- Infinite scrolling
209- Scrollbar customization
210- Height and width configuration
211
212> ⚠️ `height` is required — scroll is silently disabled without it. Do NOT combine with `allowPaging` in virtual scrolling and infinite scrolling.
213
214| Rows | Mode | Key Config |
215|---|---|---|
216| < 1,000 | `allowPaging` | `Page` module |
217| 1K – 100K | `enableVirtualization` + `height` | `VirtualScroll`, no paging |
218| Continuous | `enableInfiniteScrolling` + `height` | `InfiniteScroll` |
219| 100K+ grouped | `enableVirtualization` + `lazyLoadGrouping` | `VirtualScroll`, `Group` |
220
221### Freezing & Pinning
222📄 **Read:** [references/frozen.md](references/frozen.md)
223- Freeze columns
224- Freeze rows
225- Freeze headers
226- Row pinning
227- Frozen column behavior
228
229### Toolbar
230📄 **Read:** [references/toolbar.md](references/toolbar.md)
231- Built-in toolbar items
232- Custom toolbar buttons
233- Toolbar icons and events
234- Edit toolbar integration
235- Toolbar item templates
236
237### Context Menu
238📄 **Read:** [references/context-menu.md](references/context-menu.md)
239- Built-in context menu items
240- Custom context menus
241- Context menu configuration
242- Context menu events
243
244### Cell Operations
245📄 **Read:** [references/cell.md](references/cell.md)
246- Cell editing and selection
247- Cell templates
248- Cell value formatting
249- Cell ranges and operations
250- Cell focus and navigation
251
252📄 **Read:** [references/clipboard.md](references/clipboard.md)
253- Copy and paste functionality
254- Clipboard events
255- Custom clipboard actions
256- Copy column headers
257- Paste from external sources
258
259### Printing
260📄 **Read:** [references/print.md](references/print.md)
261- Print grid
262- Print templates
263- Print customization
264- Print specific rows/columns
265- Print orientation and sizing
266
267### Styling & Appearance
268📄 **Read:** [references/style-and-appearance.md](references/style-and-appearance.md)
269- CSS customization
270- Themes (Material, Bootstrap, Fabric)
271- Dark mode support
272- Inline styling and classes
273- Custom color schemes
274- Component size modes
275
276> ⚠️ `rowDataBound` and `queryCellInfo` fire on every render — no API calls inside them.
277> ❌ **Never** add both a column `template` and a `rowDataBound` handler targeting the same field — this produces duplicate, conflicting styling logic.
278
279### Hierarchy & Nested Data
280📄 **Read:** [references/hierarchy-grid.md](references/hierarchy-grid.md)
281- Parent-child data structures
282- Child grid
283- Expand and collapse behavior
284- Nested grid templates
285- Detail row templates
286- Hierarchical data configuration
287
288### Adaptive Mode
289📄 **Read:** [references/adaptive.md](references/adaptive.md)
290- **enableAdaptiveUI**: Render filter, sort, column chooser, and edit dialogs in full-screen mode for better mobile usability. Apply `e-bigger` class to parent element.
291- **Vertical row rendering**: Set `rowRenderingMode="Vertical"` to display row elements vertically instead of horizontally (default is Horizontal).
292- **Vertical rendering features**: Supports paging, sorting, filtering, selection, dialog editing, aggregates, infinite scroll, and toolbar options.
293- **rowRenderingMode note**: Column Menu (grouping, sorting, autofit, filter, column chooser) only works in Horizontal mode.
294- **AdaptiveUIMode property**: Use `"Mobile"` to render adaptive layout only on mobile screens, or `"Both"` (default) for both mobile and desktop.
295- **Mobile screen optimization**: Render adaptive dialogs and vertical layouts automatically when enableAdaptiveUI is enabled.
296
297### Configuration Management
298📄 **Read:** [references/global-local.md](references/global-local.md)
299- Global grid settings
300- Local column configuration
301- Configuration precedence
302- Configuration merging
303
304📄 **Read:** [references/state-management.md](references/state-management.md)
305- Persist grid state
306- Save and restore grid state manually
307- Restore grid to initial state
308- Prevent specific properties from persisting
309- Persist column templates and header text
310
311⚠️ **Rule**: `enablePersistence={true}` must be enable when use state management in grid.
312
313### Module System & Architecture
314📄 **Read:** [references/modules.md](references/modules.md)
315- Grid module architecture and feature-based modules
316- 30+ available modules and their dependencies
317- Module injection patterns
318- Feature-module mapping
319- Bundle optimization and lazy loading
320- Conditional module loading
321- Every feature in the Syncfusion React Grid requires **explicit module injection** via `<Inject services={[...]} />`. Without injection, the feature is silently ignored — no error is thrown.
322
323⚠️ **Rule**: `<Inject services={[...]} />` must be the **last child** inside `<GridComponent>`.
324
325### Data Connectivity & Adaptors
326📄 **Read:** [references/adaptors.md](references/adaptors.md)
327- 7 adaptor types for backend integration
328- UrlAdaptor, ODataV4Adaptor, WebApiAdaptor, GraphQLAdaptor
329- Custom adaptors and RemoteSaveAdaptor
330- Backend configuration examples (C#, Node.js)
331- Request/response format specifications
332- Error handling and adaptor comparison
333
334### Performance Optimization
335📄 **Read:** [references/performance.md](references/performance.md)
336- Virtual scrolling for 10,000+ records
337- Infinite scrolling and progressive loading
338- Memory management and cleanup strategies
339- Bundle size optimization
340- Event debouncing and throttling
341- Performance benchmarking and monitoring
342
343### Accessibility & Compliance
344📄 **Read:** [references/accessibility.md](references/accessibility.md)
345- WCAG 2.2 and Section 508 compliance
346- WAI-ARIA implementation and screen readers
347- Keyboard navigation (Tab, arrows, Enter, Escape)
348- Color contrast and focus management
349- Accessibility testing tools (axe, NVDA, JAWS)
350- Semantic HTML practices
351
352### Data Validation
353📄 **Read:** [references/validation.md](references/validation.md)
354- Built-in validators (required, min, max, pattern)
355- Custom validation functions
356- Async validation with server checks
357- Validation events and error display
358- Server-side validation with ASP.NET
359- Validation rules by column type
360
361### Command Column & Row Actions
362📄 **Read:** [references/command-column.md](references/command-column.md)
363- Built-in commands (Edit, Delete, Save, Cancel)
364- Custom command buttons
365- Role-based and status-based commands
366- Command click events
367- Conditional command visibility
368- CSS styling and icons
369
370### Localization & Internationalization
371📄 **Read:** [references/localization.md](references/localization.md)
372- Multi-language support (60+ languages)
373- Locale setup and culture configuration
374- Number, date, and currency formatting
375- RTL support (Arabic, Hebrew, Farsi)
376- Custom localization and translation
377- Language switcher implementation
378
379### Responsive Design & Mobile
380📄 **Read:** [references/responsive-design.md](references/responsive-design.md)
381- Adaptive UI for mobile/tablet/desktop
382- Responsive media queries and breakpoints
383- Column visibility hiding rules
384- Touch interactions (swipe, long-press)
385- Mobile optimization strategies
386- Device-specific styling patterns
387
388### API Reference & Properties
389
390📄 **Read:** [references/properties-configuration.md](references/properties-configuration.md)
391- All 95+ configurable properties organized by category
392- Quick reference table for quick lookup
393- When to use each property
394- Module requirements per property
395
396### Programmatic Control (Methods)
397
398📄 **Read:** [references/programmatic-api.md](references/programmatic-api.md)
399- All 137+ Grid methods by category (data, row, column, sort, filter, group, page, edit, export)
400- Method signatures and parameters
401- Return values and usage patterns
402- Module requirements per method
403
404### Event Communication (Events)
405
406📄 **Read:** [references/events-catalog.md](references/events-catalog.md)
407- All 65+ Grid events with timing and use cases
408- Wire `actionBegin` to **cancel** or **mutate before** an action (`args.cancel = true`, `args.data.field = value`)
409- Wire `actionComplete` to **react after** (API call, toast, refresh, toolbar restore)
410- Must wire `actionFailure` for error handling
411- Use `args.requestType` to identify the action
412
413
414### Advanced Patterns & Real-World Scenarios
415
416📄 **Real-Time Updates:** [references/real-time-updates.md](references/real-time-updates.md)
417- Auto-refresh, WebSocket, and SignalR integration patterns
418- Push vs. pull data strategies
419- Connection management and reconnection logic
420
421📄 **Performance Monitoring:** [references/performance-monitoring.md](references/performance-monitoring.md)
422- Measure grid operation times
423- Identify rendering bottlenecks
424- Optimization checklist
425- Memory usage tracking
426
427📄 **Testing Grids:** [references/testing-grids.md](references/testing-grids.md)
428- Unit testing with Jest and React Testing Library
429- Integration testing scenarios
430- Snapshot testing
431- Best practices for grid testing
432
433## Quick Start Example
434
435```tsx
436import { ColumnDirective, ColumnsDirective, GridComponent, Inject, Page, Sort, Filter } from '@syncfusion/ej2-react-grids';
437import React from 'react';
438import '../styles/App.css';
439
440const gridRef = useRef<GridComponent | null>(null);
441// Sample data
442const data = [
443 {
444 OrderID: 10248,
445 CustomerID: 'VINET',
446 EmployeeID: 5,
447 OrderDate: new Date(1996, 6, 4)
448 },
449 {
450 OrderID: 10249,
451 CustomerID: 'TOMSP',
452 EmployeeID: 6,
453 OrderDate: new Date(1996, 6, 5)
454 },
455];
456
457function App() {
458 return (
459 <GridComponent
460 ref={gridRef}
461 dataSource={data}
462 allowPaging={true}
463 allowSorting={true}
464 allowFiltering={true}
465 pageSettings={{ pageSize: 10 }}
466 >
467 <ColumnsDirective>
468 <ColumnDirective field='OrderID' headerText='Order ID' width='100' textAlign='Right' />
469 <ColumnDirective field='CustomerID' headerText='Customer' width='120' />
470 <ColumnDirective field='OrderDate' headerText='Order Date' width='130' type='date' format='yMd' />
471 </ColumnsDirective>
472 <Inject services={[Page, Sort, Filter]} />
473 </GridComponent>
474 );
475}
476
477export default App;
478```
479