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