The expandable plugin for UI-Grid provides the ability to have a subgrid in your grid.
You can install @ui-grid/expandable
via:
npm i --save @ui-grid/expandable
Once you install you need to load the respective JS and CSS files as seen bellow:
<link rel="stylesheet" href="/node_modules/@ui-grid/core/css/ui-grid.min.css" type="text/css">
<link rel="stylesheet" href="/node_modules/@ui-grid/expandable/css/ui-grid.expandable.min.css" type="text/css">
<script src="/node_modules/@ui-grid/core/js/ui-grid.core.min.js">
<script src="/node_modules/@ui-grid/expandable/js/ui-grid.expandable.min.js">
Alternatively, if you are using Webpack or RequireJS to load your dependencies, you can do the following at the top of the file that needs it:
require('@ui-grid/core');
require('@ui-grid/expandable');
Once you load the file, you need to include 'ui.grid.expandable' module in your angularJS app's dependencies, and add the ui-grid-expandable directive to your grid element.
angular.module('myApp', [
'ui.grid',
'ui.grid.expandable'
]);
<div ui-grid="$ctrl.gridOptions" ui-grid-expandable>
To show the subgrid you need to provide following grid options:
vm.gridOptions = {
// the template that will be used to render subgrid.
expandableRowTemplate: 'expandableRowTemplate.html',
// the height of the subgrid
expandableRowHeight: 140,
// the scope of the expanded subgrid
expandableRowScope: expandableScope
};
expandableRowTemplate will be the template for subgrid and expandableRowHeight will be the height of the subgrid. expandableRowScope can be used to add variables to the scope of expanded grid. These variables can then be accessed from expandableRowTemplate. The grid api provides the following events and methods for subGrids:
// rowExpandedStateChanged is fired for each row as its expanded:
gridApi.expandable.on.rowExpandedStateChanged($scope, function(row) {
// your logic here
});
// These can be used to expand/collapse all rows of the grid:
gridApi.expandable.expandAllRows();
gridApi.expandable.collapseAllRows();
You can find an example of this plugin in action on our website
Documentation for this plugin is provided in the api documentation, but we recommend that you pay special attention to the following:
You can find issues that are specific to this UI-Grid plugin by looking for the label grid-expandable in the ui-grid github issues page.