Expand All

  Getting Started

  Interfacing

  Features

  Row Models

  Themes

  Components

  Examples

  Third Party

Misc

Github stars make projects look great. Please help, donate a star, it's free.
Read about ag-Grid's Partnership with webpack.
Get informed on releases and other ag-Grid news only - never spam.
Follow on Twitter

Web Component Grid

ag-Grid can be used as a Web Component grid inside your application. This page details how to get started.

Download ag-Grid

Bower
bower install ag-grid
NPM
npm install ag-grid
Github
Download from Github

Referencing ag-Grid

ag-Grid is distributed as both a self contained bundle (that places ag-Grid on the global scope) and also via a CommonJS package.

Using the bundled version is the quickest way to get going - reference this version in your HTML file is all you need to do.

You also need to provide a block (a div is the most common) element for the Grid to use - assign it an ID which you can then use later when instantiating the Grid.

<html>
<head>
    <script src="path-to-ag-grid-/ag-grid.js"></script>
    <script src="example1.js"></script>
</head>
<body>
    <div id="myGrid" style="height: 100%;" class="ag-fresh"></div>
</body>
</html>

Download ag-Grid-Enterprise

Bower
bower install ag-grid-enterprise
NPM
npm install ag-grid-enterprise
Github
Download from Github

Referencing ag-Grid-Enterprise

ag-Grid-Enterprise is also distributed as both a self contained bundle and also via a CommonJS package.

As with the ag-Grid example, all we need to do is reference the ag-grid-enterprise dependency and we're good to go:

<html>
<head>
    <script src="path-to-ag-grid-enterprise/ag-grid-enterprise.js"></script>
    <script src="example1.js"></script>
</head>
<body>
    <div id="myGrid" style="height: 100%;" class="ag-fresh"></div>
</body>
</html>
Self Contained Bundles

Do not include both ag-Grid and ag-Grid-Enterprise self contained bundles. The ag-Grid-Enterprise contains ag-Grid.

The creation of the Grid would be the same as the ag-Grid example above.

ag-Grid Enterprise Bundle Types

Again similar to ag-Grid, ag-Grid-Enterprise has 4 bundles:

  • dist/ag-grid-enterprise.js -> standard bundle containing JavaScript and CSS
  • dist/ag-grid-enterprise.min.js -> minified bundle containing JavaScript and CSS
  • dist/ag-grid-enterprise.noStyle.js -> standard bundle containing JavaScript without CSS
  • dist/ag-grid-enterprise.min.noStyle.js -> minified bundle containing JavaScript without CSS

Even if you are using React, AngularJS 1.x, Angular, VueJS or Web Components, the above is all you need to do. Any grid you create will be an enterprise grid once you load the library.

CommonJS

If using CommonJS, you one need to include ag-Grid-Enterprise into your project. You do not need to execute any code inside it. When ag-Grid-Enterprise loads, it will register with ag-Grid such that the enterprise features are available when you use ag-Grid.

// ECMA 5 - using nodes require() method
var AgGrid = require('ag-grid');
// only include this line if you want to use ag-grid-enterprise
require('ag-grid-enterprise');

// ECMA 6 - using the system import method
import {Grid} from 'ag-grid/main';
// only include this line if you want to use ag-grid-enterprise
import 'ag-grid-enterprise/main';

Web Components are reusable user interface widgets that are created using open Web technology. They are part of the browser and so they do not depend on external libraries such as AngularJS 1.x or JQuery.

Web Components are of particular interest to ag-Grid as I see them as the future for reusable components. A true Web Component will be reusable in any framework. Angular's directives are based on Web Components.

Web components are an emerging technology and not available in all browsers. Some browsers lacking support can be plugged using polyfills. The examples on this page use webcomponent.js polyfill from Google. The examples on this page have been tested to work with latest versions of Chrome and Firefox on Windows. They failed using IE 11 and Safari on Windows. I have not done extensive testing on which browsers Web Components as what browsers support Web Components and which don't is not a grid problem / discussion, it's specific to Web Components. If you are going to use Web Components in your application, then which browsers your application will run on is a big question you need to answer for yourself.

Using ag-Grid Web Component

When using Web Components, you have the choice of using the bundled version of ag-Grid or the CommonJS version.

When the ag-Grid script loads, it does not register the Web Component. This is because the Web Component is an optional part of ag-Grid and you need to tell ag-Grid you want to use it.

// get ag-Grid to install the web component
agGrid.initialiseAgGridWithWebComponents();

ag-Grid registers as a tag named 'ag-grid'. To insert a grid into your application, use the ag-grid tag and then either provide the grid options through Javascript or provide options through html attributes.

HTML Code:

<ag-grid id="myGrid"></ag-grid>
Javascript Code:
var myGrid = document.querySelector('#myGrid');
myGrid.setGridOptions(gridOptions);

Basic Web Components Example

The example below shows a simple grid using Web Components.

Advanced Web Components Example

Destroy

To get the grid to release resources, call api.destroy(). If you do not do this, old grids will hang around and add to a memory leak problem in your application.

Complex Web Components Example

The complex example for Web Components is similar to that for Angular. This is on purpose as Angular components are based on Web Components. The example demonstrates the following:

  • Events: All data out of the grid comes through events. These events are native browser events and can be listened to one of:
    a) Calling addEventListener(eventName, handler) on the element
    b) Add an onXXX handler directly to the element or
    c) Add an onXXX handler directly to the grid options.
    In the example, the event 'columnResized' is added in each of these three ways.
  • Attributes: Attributes can be used for setting up the grid. The example uses such properties for the simple data types (ie when they are not Javascript objects). Notice that boolean attributes are defaulted to 'true' IF the attribute is provided WITHOUT any value. If the attribute is not provided, it is taken as false. Attributes can be changed after the grid is initialised, and the grid will update if appropriate (eg open up your dev tools and change the 'group-headers' and set it to 'false').
  • Properties: The more complex properties (eg row and column data) are attached directly to the grid DOM element.
  • Grid API: The grid can be interfaced with through it's API. The following interact via the API:
    a) The quickFilter text.
    b) The Grid API and Column API buttons
    c) The 'Refresh Data via API' buton
  • Changing Attributes & Properties: When an attribute or property changes value, the grid, if appropriate, acts on this change. This is done in the example in the following locations:
    a) The 'Show Tool Panel' checkbox has it's value bound to the 'showToolPanel' property of the grid.
    b) The 'Refresh Data via Element' generates new data for the grid by attaching it to the rowData property.

Next Steps...

Now you can go to interfacing to learn about accessing all the features of the grid.