JavaScript Data GridGet Started with AG Grid
Quick Look Code Example
const columnDefs = [
{ field: "make" },
{ field: "model" },
{ field: "price" }
];
// specify the data
const rowData = [
{ make: "Toyota", model: "Celica", price: 35000 },
{ make: "Ford", model: "Mondeo", price: 32000 },
{ make: "Porsche", model: "Boxster", price: 72000 }
];
// let the grid know which columns and what data to use
const gridOptions = {
columnDefs: columnDefs,
rowData: rowData
};
// setup the grid after the page has finished loading
document.addEventListener('DOMContentLoaded', () => {
const gridDiv = document.querySelector('#myGrid');
new agGrid.Grid(gridDiv, gridOptions);
});
Getting Started with Community Video
Getting Started with Enterprise Video
Getting Started with AG Grid Community
Below we provide code for a simple AG Grid application. To get this working locally, create a new application with one index.html
page and have it served from a local web server. If you are not able to set up a web server, then you can start with a new JS project from Plunker.
Copy in Application Code
Copy the content below into the file index.html
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0"
/>
<title>Ag Grid App</title>
<!-- Include the JS for AG Grid -->
<script src="https://cdn.jsdelivr.net/npm/ag-grid-community/dist/ag-grid-community.min.noStyle.js"></script>
<!-- Include the core CSS, this is needed by the grid -->
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/ag-grid-community/styles/ag-grid.css"/>
<!-- Include the theme CSS, only need to import the theme you are going to use -->
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/ag-grid-community/styles/ag-theme-alpine.css"/>
</head>
<body>
<!-- Button to demonstrate calling the grid's API. -->
<button onclick="deselect()">Deselect Rows</button>
<!-- The div that will host the grid. ag-theme-alpine is the theme. -->
<!-- The gid will be the size that this element is given. -->
<div id="myGrid" class="ag-theme-alpine" style="height: 500px"></div>
<script type="text/javascript">
// Function to demonstrate calling grid's API
function deselect(){
gridOptions.api.deselectAll()
}
// Grid Options are properties passed to the grid
const gridOptions = {
// each entry here represents one column
columnDefs: [
{ field: "make" },
{ field: "model" },
{ field: "price" },
],
// default col def properties get applied to all columns
defaultColDef: {sortable: true, filter: true},
rowSelection: 'multiple', // allow rows to be selected
animateRows: true, // have rows animate to new positions when sorted
// example event handler
onCellClicked: params => {
console.log('cell was clicked', params)
}
};
// get div to host the grid
const eGridDiv = document.getElementById("myGrid");
// new grid instance, passing in the hosting DIV and Grid Options
new agGrid.Grid(eGridDiv, gridOptions);
// Fetch data from server
fetch("https://www.ag-grid.com/example-assets/row-data.json")
.then(response => response.json())
.then(data => {
// load fetched data into grid
gridOptions.api.setRowData(data);
});
</script>
</body>
</html>
If everything is correct, you should see a simple grid that looks like this:this:

We will now break this file down and explain the different parts...
Importing JS & CSS, Setting Theme & Style
You can import all JS and CSS with ag-grid-community.min.js
, or you can be selective
and import just the JS ag-grid-community.min.noStyle.js
and selectively include the CSS,
so you don't download themes you don't want to use.
<!-- Include the JS for AG Grid -->
<script src="https://cdn.jsdelivr.net/npm/ag-grid-community/dist/ag-grid-community.min.noStyle.js"></script>
<!-- Include the core CSS, this is needed by the grid -->
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/ag-grid-community/styles/ag-grid.css"/>
<!-- Include the theme CSS, only need to import the theme you are going to use -->
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/ag-grid-community/styles/ag-theme-alpine.css"/>
OR
<!-- Include the JS and CSS (all themes) for AG Grid. Larger download than needed -->
<!-- as will includes themes you don't use -->
<script src="https://cdn.jsdelivr.net/npm/ag-grid-community/dist/ag-grid-community.min.js"></script>
You can select from any of the Grid Provided Themes. If you don't like the provided themes you can Customise the Provided Theme or do not use a Theme and style the grid yourself from scratch.
The dimension of the Grid is also set on the parent DIV via style="height: 500px"
.
<div id="myGrid" class="ag-theme-alpine" style="height: 500px"></div>
Grid Options
Options are provided to the grid using a Grid Options object.
// Grid Options are properties passed to the grid
const gridOptions = {
// each entry here represents one column
columnDefs: [
{ field: "make" },
{ field: "model" },
{ field: "price" },
],
// default col def properties get applied to all columns
defaultColDef: {sortable: true, filter: true},
rowSelection: 'multiple', // allow rows to be selected
animateRows: true, // have rows animate to new positions when sorted
// example event handler
onCellClicked: params => {
console.log('cell was clicked', params)
}
};
Creating New Grid Instance
The grid instance is created using new agGrid.Grid()
passing in the DOM
element to host the grid and the Grid Options.
// get div to host the grid
const eGridDiv = document.getElementById("myGrid");
// new grid instance, passing in the hosting DIV and Grid Options
new agGrid.Grid(eGridDiv, gridOptions);
Setting Row Data
Data is loaded from the server and set using the grid API setRowData()
.
// Fetch data from server
fetch("https://www.ag-grid.com/example-assets/row-data.json")
.then(response => response.json())
.then(data => {
// load fetched data into grid
gridOptions.api.setRowData(data);
});
Accessing Grid's API
Once created, the grid places an API object on the Grid Options. This can then be accessed to use the grid's API.
// Function to demonstrate calling grid's API
function deselect(){
gridOptions.api.deselectAll()
}
Consuming Grid Events
Listen to Grid Events by adding a callback to the appropriate on[eventName]
onto
the Grid Options. This example demonstrates consuming the cellClicked
event.
const gridOptions = {
onCellClicked: params => { // example event handler
console.log('cell was clicked', params)
}
....
Getting Started with AG Grid Enterprise
We would love for you to try out AG Grid Enterprise. There is no cost to trial. You only need to get in touch if you want to start using AG Grid Enterprise in a project intended for production.
To use AG Grid Enterprise instead of AG Grid Community, use the imports
ag-grid-enterprise.min.noStyle.js
and ag-grid-enterprise.min.js
instead of ag-grid-community.min.noStyle.js
and ag-grid-community.min.js
.
For example if you were using ag-grid-community.min.js
then make the follow change to enable all the Enterprise features.
- <script src="https://cdn.jsdelivr.net/npm/ag-grid-community@30.1.0/dist/ag-grid-community.min.js"></script>
+ <script src="https://cdn.jsdelivr.net/npm/ag-grid-enterprise@30.1.0/dist/ag-grid-enterprise.min.js"></script>
And that is all, you create the grid the same way, except this time it comes installed with all the Enterprise features.
For example, you can now Row Group (an Enterprise Feature) by a particular Column by
setting rowGroup=true
on the Column Definition.
const gridOptions = {
columnDefs: [
{ field: "make", rowGroup: true },
{ field: "model" },
{ field: "price" },
],
...