Skip to content

SyncfusionExamples/syncfusion-react-grid-demo

Repository files navigation

Syncfusion React Grid Demo Application

A comprehensive demonstration of Syncfusion React Grid capabilities with multiple data management patterns including client-side virtualization, server-side virtualization, real-time data streaming, and advanced data binding.

📋 Overview

This application showcases six distinct grid implementations, each demonstrating specific use cases and performance optimization strategies for handling data at scale:

  • Setup - Basic grid setup and quick start guide
  • CoreFeatures - Core grid features with advanced templates and styling
  • DataSource - Server-side data management with REST API integration
  • Paging - Pagination with configurable page sizes and CRUD operations
  • VirtualScrolling - Virtual scrolling with dynamic row loading for large datasets
  • LiveData - Real-time data streaming with continuous live updates

🎯 Key Features

Data Management

  • ✅ Real-time data binding and live updates
  • ✅ Client-side flat array data sources
  • ✅ Server-side virtualization with REST APIs
  • ✅ DataManager integration with UrlAdaptor
  • ✅ Advanced filtering with checkbox filters
  • ✅ Multi-column sorting with dynamic data
  • ✅ Configurable pagination (client-side and server-side)
  • ✅ Complete CRUD operations (Create, Read, Update, Delete)

Performance Optimization

  • ✅ Handles 100,000+ rows with server-side virtualization
  • ✅ Virtual scrolling for 10,000+ client-side records
  • ✅ Optimized DOM rendering with row-level virtualization
  • ✅ Intelligent scroll detection with debouncing
  • ✅ Minimal memory footprint with buffer management
  • ✅ High-frequency data stream support (real-time updates)
  • ✅ Responsive grid layout with adaptive columns
  • ✅ Loading skeleton/shimmer UI for data fetching

UI & Template Features

  • ✅ Custom column templates with avatars and badges
  • ✅ Status indicators and color-coded visualizations
  • ✅ Financial metric templates for trade data
  • ✅ Inline editing with comprehensive validation rules
  • ✅ Summary aggregation (sum, count, average)
  • ✅ Date picker editors for temporal data
  • ✅ Fully responsive design across all screen sizes
  • ✅ Professional styling with Tailwind CSS

🚀 Quick Start

Prerequisites

  • Node.js 16+
  • npm or yarn package manager

Installation

# Install dependencies
npm install

# Install Syncfusion React Grid
npm install @syncfusion/react-grid

Configuration

Import Syncfusion Grid styles in your main entry file:

// In main.tsx
import '@syncfusion/react-grid/styles/material.css'

Run Development Server

npm run dev

The application will be available at http://localhost:5173

📦 Project Structure

src/
├── components/
│   ├── Grid.tsx                        # Basic grid component
│   ├── EmployeeGrid.tsx                # Employee data grid
│   ├── EmployeeListGrid.tsx            # Employee list grid with icons
│   ├── TaskDetailsGrid.tsx             # Task details grid
│   ├── WorkDetailsGrid.tsx             # Work details grid
│   ├── LiveDataGrid.tsx                # Real-time live data grid
│   ├── Navbar.tsx                      # Navigation component
│   ├── CodeSnippet.tsx                 # Code snippet display component
│   ├── CodeViewer.tsx                  # Multi-file code viewer
│   └── SectionTabLayout.tsx            # Tab-based section layout
├── pages/
│   ├── Setup.tsx                       # Quick setup guide page
│   ├── CoreFeatures.tsx                # Core features showcase page
│   ├── DataSource.tsx                  # Server-side data management page
│   ├── Paging.tsx                      # Pagination and CRUD demo page
│   ├── VirtualScrolling.tsx            # Virtual scrolling performance page
│   └── LiveData.tsx                    # Real-time live data page
├── app/
│   ├── models/
│   │   ├── employeeListData.ts         # Employee list dataset
│   │   ├── employeeTasks.ts            # Employee task data
│   │   ├── taskDetails.ts              # Task details dataset
│   │   ├── tradeData.ts                # Trade data for real-time streaming
│   │   └── workDetails.ts              # Work details dataset
│   ├── styles/
│   │   ├── codeBlock.css               # Code block styling
│   │   ├── EmployeeGrid.css            # Employee grid styles
│   │   ├── EmployeeListGridIcon.module.css  # Employee list grid icon styles
│   │   ├── Grid.css                    # Core grid styles
│   │   ├── GridIcons.module.css        # Grid icon module styles
│   │   ├── live-data-grid.css          # Live data grid styles
│   │   ├── TaskDetailsGrid.css         # Task details grid styles
│   │   ├── WorkDetailsGrid.css         # Work details grid styles
│   │   └── globals.css                 # Global application styles
│   └── App.tsx                         # Main app component
├── App.tsx                             # App container
├── App.css                             # App-level styles
├── main.tsx                            # Entry point
├── index.css                           # Base styles

Setup - Quick Setup & Getting Started

Page: Setup.tsx Component: Grid.tsx Data: employeeTasks.ts

  • Core Syncfusion Grid features and configuration
  • Basic sorting, filtering, and paging setup
  • Client-side flat array data binding
  • Professional demo layout with code examples
  • Step-by-step implementation guide for beginners

CoreFeatures - Advanced Grid Features

Page: CoreFeatures.tsx Components: EmployeeGrid.tsx, TaskDetailsGrid.tsx, WorkDetailsGrid.tsx Data: employeeListData.ts, taskDetails.ts, workDetails.ts

  • Custom column templates with avatars and icons
  • Multi-column sorting with advanced filtering
  • Inline editing with validation rules
  • Footer aggregates for summary calculations
  • CRUD toolbar actions
  • Color-coded styling and visual indicators

DataSource - Server-Side Data Management

Page: DataSource.tsx Component: Grid.tsx Service URL: https://services.syncfusion.com/js/production/api/UrlDataSource

  • Server-side virtualization for 100,000+ records
  • On-demand data loading with configurable page sizes
  • DataManager with UrlAdaptor for REST API integration
  • Custom templates for status badges and metrics
  • Loading skeleton/shimmer UI during data fetch
  • Responsive grid layout with adaptive columns

Paging - Data Management with Pagination

Page: Paging.tsx Component: EmployeeListGrid.tsx Data: employeeListData.ts

  • Client-side pagination with configurable page sizes
  • Inline editing with comprehensive validation
  • Complete CRUD operations (Create, Read, Update, Delete)
  • Date picker and form validation controls
  • Footer sum aggregates for metrics
  • Responsive pagination controls

VirtualScrolling - Virtual Scrolling for Performance

Page: VirtualScrolling.tsx Component: Grid.tsx Data: employeeListData.ts with dynamic data generation

  • Client-side virtual rendering for 10,000+ records
  • DOM virtualization with row-level optimization
  • Multi-column sorting without performance impact
  • Viewport-based rendering for smooth scrolling
  • Debounced scroll event handling
  • Minimal memory footprint with buffer management
  • Consistent performance at high scroll velocities

LiveData - Real-Time Live Data Streaming

Page: LiveData.tsx Component: LiveDataGrid.tsx Data: tradeData.ts with dynamic continuous updates

  • Real-time streaming data with continuous updates
  • Start, stop, and clear data feed controls
  • Configurable refresh delay for update frequency
  • Custom financial metric templates
  • Color-coded price movement indicators
  • Dynamic cell value updates using setCellValue API
  • High-frequency update support

🛠️ Technology Stack

  • Frontend Framework: React 18+
  • Language: TypeScript
  • Build Tool: Vite
  • UI Component Library: Syncfusion React Grid
  • Styling: Tailwind CSS
  • Routing: React Router DOM
  • Data Management: Syncfusion DataManager
  • Styling Tools: PostCSS

⚙️ Available Scripts

# Development server with HMR
npm run dev

# Production build
npm run build

# Preview production build
npm run preview

# Run linting
npm run lint

🎨 Styling

The application uses Tailwind CSS for responsive styling with a professional blue and gradient theme:

  • Primary colors: Blue (500-700)
  • Accent colors: Teal, Purple, Orange, Amber (theme-specific)
  • Shadow effects: Enhanced for grid prominence
  • Responsive breakpoints: Mobile, tablet, desktop

📈 Performance Considerations

Memory Management

  • Virtual scrolling reduces DOM nodes
  • Server-side virtualization manages backend data
  • Intelligent caching prevents re-fetching
  • Streaming data with bounded buffers

Rendering Optimization

  • React components with memo optimization
  • Lazy loading of grid components
  • Efficient event handling
  • Optimized change detection

Scalability

  • Handles 100,000+ rows client-side
  • Supports millions of rows server-side
  • Real-time updates without lag
  • Consistent performance across browsers

🔌 API Integration

The GridDataAPI component demonstrates server-side data integration using Syncfusion DataManager with UrlAdaptor:

const data = new DataManager({
  url: 'your-api-endpoint',
  adaptor: new UrlAdaptor(),
  pageSize: 50
})

📱 Browser Support

  • Chrome (latest)
  • Firefox (latest)
  • Safari (latest)
  • Edge (latest)

🔐 Best Practices

  1. Data Binding: Use appropriate virtualization method based on dataset size
  2. Performance: Implement virtual scrolling for datasets > 1000 rows
  3. Caching: Enable server-side caching when using remote data
  4. Memory: Monitor DOM size in browser DevTools
  5. Responsiveness: Test grid behavior across screen sizes

📚 Resources

💡 Common Use Cases

Large Dataset Display (100,000+ Records)

Use DataSource page with server-side virtualization, DataManager REST API integration, and virtual scrolling for enterprise-scale data with server-side filtering and sorting.

Massive Client-Side Datasets (10,000+ Records)

Use VirtualScrolling page for client-side flat array data with DOM virtualization, smooth scrolling, and optimized memory management.

Real-Time Monitoring & Trading

Use LiveData page for live data feeds with continuous updates, color-coded indicators, and high-frequency streaming capabilities.

Data Entry & Management Forms

Use Paging page with inline editing, validation, and CRUD toolbar actions for comprehensive data operations.

Analytical Dashboards

Combine Paging with footer aggregates for summarized data views, or use DataSource with server-side aggregation for large datasets.

Advanced Grid Features Showcase

Use CoreFeatures page to demonstrate custom templates, multi-column sorting, filtering, validation, and complex data relationships with multiple grid instances.

🤝 Contributing

For improvements or bug reports, please follow the project's code standards:

  • Maintain TypeScript type safety
  • Use functional components with hooks
  • Keep components modular and reusable
  • Follow the existing styling patterns

📄 License

This project is provided as-is for educational and demonstration purposes.

About

A pure React demo showcasing the Syncfusion React DataGrid with core features such as data binding, column filtering, and editing. This project provides a simple, runnable example designed for quick evaluation and live demonstrations without wrapper abstractions.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages