Range selection allows Excel-like range selection of cells. Once enabled, you can drag the mouse over a set of cells to select a range of cells.
To select multiple ranges, hold down ctrl while making the selection.
It is possible to select a range that spans pinned and non-pinned sections of the grid. If you do this, the selected range will not have any gaps with regards the column order. For example, if you start the drag on the left pinned area and drag to the right pinned area, then all of the columns in the center area will also be part of the range.
Likewise with floating, no row gaps will occur if a range spans into pinned rows. A range will be continuous between the floating top rows, the center, and the floating bottom rows.
The above two (pinning and floating) can be thought of as follows: If you have a grid with pinning and / or floating, then 'flatten out' the grid in your head so that all rows and columns are visible, then the range selection will work as you would expect in the flattened out version with only full rectangles can be selectable.
There is one event rangeSelectionChanged to tell you the range selection has changed. The event has two properties, started and finished, which are true when the selection is starting or finishing. For example, if selecting a range of 10 cells in a row, the user will click the first cell and drag to the last cell. This will result in up to 11 events. The first event will have started=true, the last will have finished=true, and all the intermediary events will have both of these values as false.
Get the selected ranges using api.getRangeSelections(). This will return back
a list of range selection objects, each object contain the details of one range. The
structure of the range selection is as follows:
The start and end will be the cells the user started the drag on. Two things to notice about the start and end:
Clears the range selection.
Adds a range to the selection. This keeps any prevoius ranges. If you wish to have this range
exclusively, then call clearRangeSelection() first.
There is a grid callback processCellForClipboard() that allows you to format cells before going to the clipboard. This can be useful if, for example, you are pasting to Excel and you need to format dates so that Excel can understand them.
The callback params has the following attributes: value, node, column, api, columnApi, context, type.
When you have more than one row selected in a range, pressing keys Ctrl & D will copy the range down.
The example below demonstrates range selection. Use your mouse to drag over the cells to create selections. Hold down ctrl to select more than one range. The example listens for the rangeSelectionChanged event and creates a sum of all the number values that are in the range (it ignores all non-number values). The finished flag is used to update the eager and lazy figures separately.
The example also shows use of processCellForClipboard() and processCellFromClipboard() by making all the athlete names upper case when copying into the clipboard and lowercase when copying it from the clipboard.