What is @ag-grid-community/client-side-row-model?
@ag-grid-community/client-side-row-model is a powerful and flexible data grid component for JavaScript applications. It allows for efficient client-side data management, sorting, filtering, and grouping, making it ideal for handling large datasets in a performant manner.
What are @ag-grid-community/client-side-row-model's main functionalities?
Sorting
This feature allows users to sort data by clicking on the column headers. The code sample demonstrates how to enable sorting on the 'name' and 'age' columns.
const gridOptions = {
columnDefs: [
{ field: 'name', sortable: true },
{ field: 'age', sortable: true }
],
rowData: [
{ name: 'John', age: 25 },
{ name: 'Jane', age: 30 }
]
};
new agGrid.Grid(document.getElementById('myGrid'), gridOptions);
Filtering
This feature allows users to filter data based on column values. The code sample shows how to enable filtering on the 'name' and 'age' columns.
const gridOptions = {
columnDefs: [
{ field: 'name', filter: true },
{ field: 'age', filter: true }
],
rowData: [
{ name: 'John', age: 25 },
{ name: 'Jane', age: 30 }
]
};
new agGrid.Grid(document.getElementById('myGrid'), gridOptions);
Grouping
This feature allows users to group rows based on column values. The code sample demonstrates how to group rows by the 'country' column.
const gridOptions = {
columnDefs: [
{ field: 'name' },
{ field: 'age' },
{ field: 'country', rowGroup: true }
],
rowData: [
{ name: 'John', age: 25, country: 'USA' },
{ name: 'Jane', age: 30, country: 'UK' }
],
autoGroupColumnDef: {
headerName: 'Group',
field: 'country',
cellRenderer: 'agGroupCellRenderer',
cellRendererParams: {
checkbox: true
}
}
};
new agGrid.Grid(document.getElementById('myGrid'), gridOptions);
Other packages similar to @ag-grid-community/client-side-row-model
react-table
react-table is a lightweight, fast, and extendable data grid built for React. It provides hooks for managing table state and rendering, but it does not come with built-in features like sorting, filtering, and grouping out of the box. Instead, it allows developers to implement these features as needed, offering more flexibility but requiring more setup compared to @ag-grid-community/client-side-row-model.
handsontable
handsontable is a JavaScript/HTML5 data grid component with a spreadsheet-like interface. It offers a wide range of features including sorting, filtering, and grouping, similar to @ag-grid-community/client-side-row-model. However, handsontable is more focused on providing an Excel-like experience, which may be more suitable for applications requiring complex data manipulation and editing.
slickgrid
slickgrid is a JavaScript grid/spreadsheet component that is highly performant and capable of handling large datasets. It offers features like sorting, filtering, and grouping, similar to @ag-grid-community/client-side-row-model. However, slickgrid is more lightweight and may require additional customization to achieve the same level of functionality provided by @ag-grid-community/client-side-row-model.
ag-Grid
ag-Grid is a fully-featured and highly customizable JavaScript data grid.
It delivers outstanding performance, has no 3rd party dependencies and integrates smoothly with all major JavaScript frameworks. Here's how our grid looks like with multiple filters and grouping enabled:
Features
Besides the standard set of features you'd expect from any grid:
- Column Interactions (resize, reorder, and pin columns)
- Pagination
- Sorting
- Row Selection
Here are some of the features that make ag-Grid stand out:
- Grouping / Aggregation*
- Custom Filtering
- In-place Cell Editing
- Records Lazy Loading *
- Server-Side Records Operations *
- Live Stream Updates
- Hierarchical Data Support & Tree View *
- Customizable Appearance
- Customizable Cell Contents
- Excel-like Pivoting *
- State Persistence
- Keyboard navigation
- Data Export to CSV
- Data Export to Excel *
- Row Reordering
- Copy / Paste
- Column Spanning
- Pinned Rows
- Full Width Rows
* The features marked with an asterisk are available in the enterprise version only.
Check out developers documentation for a complete list of features or visit our official docs for tutorials and feature demos.
Looking for a framework specific solution?
Usage Overview
Install dependencies
$ npm i --save ag-grid
Add a placeholder to HTML
<div id="myGrid" style="height: 150px;width: 600px" class="ag-theme-balham"></div>
Import the grid and styles
import {Grid} from "@ag-grid-community/core";
import "@ag-grid-community/core/dist/styles/ag-grid.css";
import "@ag-grid-community/core/dist/styles/ag-theme-balham.css";
Set configuration
const gridOptions = {
columnDefs: [
{headerName: 'Make', field: 'make'},
{headerName: 'Model', field: 'model'},
{headerName: 'Price', field: 'price'}
],
rowData: [
{make: 'Toyota', model: 'Celica', price: 35000},
{make: 'Ford', model: 'Mondeo', price: 32000},
{make: 'Porsche', model: 'Boxter', price: 72000}
]
};
Initialize the grid
let eGridDiv = document.querySelector('#myGrid');
new Grid(eGridDiv, this.gridOptions);
For more information on how to integrate the grid into your project see TypeScript - Building with Webpack 2.
Issue Reporting
If you have found a bug, please report them at this repository issues
section. If you're using Enterprise version please use the private ticketing system to do that. For more information on support check out our dedicated page.
Asking Questions
Look for similar problems on StackOverflow using the ag-grid
tag. If nothing seems related, post a new message there. Do not use GitHub issues to ask questions.
Contributing
ag-Grid is developed by a team of co-located developers in London. If you want to join the team check out our jobs listing or send your application to info@ag-grid.com.
License
This project is licensed under the MIT license. See the LICENSE file for more info.