Each time you pass data to the grid, the grid wraps each data item with a rowNode object. For example if your data has 20 rows, then the grid creates 20 rowNode objects, each rowNode wrapping one item of your data.
It is sometimes handy to access these rowNodes. One example where it is handy
is if you want to select a row, you can call
to select it.
This section details the different ways a rowNode can be accessed.
The following methods are provided for accessing the individual rowNodes. A deeper explanation of these methods, along with examples, are provided further down.
|getRowNode(id)||Returns the row node with the given ID. Works only with the InMemoryRowModel. The row node id is the one you provide with the callback getRowNodeId(data), otherwise the id is a number auto generated by the grid when the row data is set.|
|forEachNodeAfterFilter(callback)||Similar to forEachNode, except skips any filtered out data.|
|forEachNodeAfterFilterAndSort(callback)||Similar to forEachNode, except skips any filtered out data and each the callback is called in the order the rows are displayed in the grid.|
|forEachLeafNode(callback)||Similar to forEachNode, except lists all the leaf nodes. This effectively goes through all the data that you provided the grid before the grid did any grouping.|
|getDisplayedRowAtIndex(index)||Returns the displayed rowNode at the riven index.|
|getDisplayedRowCount()||Returns the total number of displayed rows.|
|getFirstDisplayedRow()||Get the index of the first displayed row due to scrolling (includes not visible rendered rows in the buffer)|
|getLastDisplayedRow()||Get the index of the last displayed row due to scrolling (includes not visible rendered rows in the buffer)|
The easiest way to get a rowNode is by it's ID.
The ID is either provided by you using the grid callback
or generated by the grid using an internal sequence.
Accessing the rowNode by ID is available in the In Memory Row Model only.
Sometimes you may want to iterate through all the rowNodes in the grid. This can be done using the grid's iteration APIs. The iteration API's go through every rowNode, regardless of whether the rowNode is displayed or not. For example if grouping and the group is closed, the group's children are not displayed by the grid, however the children are included in the iteration 'for-each' methods.
All of the methods above work with the In Memory
Row Model. For all the other row models (Viewport,
Enterprise) the only method that is supported
api.forEachNode() and that will return back row nodes that are loaded into
browser memory only (as each of these row models use a data source to lazy load rows).
The example below shows the different for-Each API methods as follows:
In the example, try applying some sorts and filters, and see how this impacts the different operations.
Displayed rows are rows that the grid tries to render. For example, if you have a group that is closed, the children of that group will not appear in the displayed rows. The grid renders the displayed rows onto the screen.
The displayed rows have indexes. For example, if the grid is rendering 20 rows, then will have indexes 0 to 19.
You can look up the rows by index. This is dependent on anything that changes the index. For example, if you apply a sort or filter, then the rows and corresponding indexes will change.
Accessing displayed rows works with all row models.
The example below demonstrates the following: