Built with showFooterRow: true but withoutcreateFooterRow. The footer
elements are never created, so the grid must still construct normally and
getFooterRow() must return undefined rather than throwing.
Displaying a totals row at the end of the grid (createFooterRow,
showFooterRow, footerRowHeight).
Building footer cell content from the onFooterRowCellRendered event, and
releasing it again on onBeforeFooterRowCellDestroy.
Writing live values into a footer cell found with getFooterRowColumn(columnId) —
totals follow cell edits, column reorder and column changes.
Showing and hiding the footer at runtime with setFooterRowVisibility().
Frozen columns: the footer is split into a left and a right pane, and
getFooterRow() returns both. Freeze and unfreeze to watch the panes
re-fill and scroll in step with the grid canvas.
The status box reports how many times the footer cell events fired for the last
rebuild — one render per visible column is correct.
A second grid shows the footer-less contract: showFooterRow without
createFooterRow constructs normally and getFooterRow() returns
undefined.
This example uses basic JSON data. It can easily be modified to accommodate a DataView.