I\'m using jQuery Datatables and I would like to incorporate row grouping into the table.
I have attempted to incorporate it myself by adding rows and a click event
First add a state to keep track of collapsed groups:
var collapsedGroups = {};
Next, add this to the Datatable initialization to enable the rowGroup plugin. It works by checking collapapsedGroups
and then this info to hide or show the rows. It also adds a css-class indicating if it's collapsed or not:
{
rowGroup: {
// Uses the 'row group' plugin
dataSrc: 'product.category',
startRender: function (rows, group) {
var collapsed = !!collapsedGroups[group];
rows.nodes().each(function (r) {
r.style.display = collapsed ? 'none' : '';
});
// Add category name to the . NOTE: Hardcoded colspan
return $(' ')
.append('' + group + ' (' + rows.count() + ') ')
.attr('data-name', group)
.toggleClass('collapsed', collapsed);
}
}
Finally, add a handler for clicking on the row for collapsing/expanding rows. This causes a redraw of the table which, in turn, calls startRender
above:
$tbody.on('click', 'tr.group-start', function () {
var name = $(this).data('name');
collapsedGroups[name] = !collapsedGroups[name];
table.draw();
});
Here is a working example.