Row, cell and column selecting

TreeGrid documentation

There can be more selected rows and cells in grid. Don't confuse selected and focused row. The focused row is the only row with cursor (FRow). See Focus cursor.
By default can be selected only whole rows, to permit selecting of individual cells or cell ranges set <Cfg SelectingCells='1'/>.
By default can be rows (and cells) selected by Ctrl+click, Shift+click, Space, Ctrl + drag, Panel Select click or drag.
To change default selecting behavior assign the selecting actions to different events.

By default is selection persistent. To clear selection after mouse click, add to action OnClickCell="... ,ClearSelection".
To permit only selected row at a time, add the ClearSelection before all selecting actions calls.

The selected rows can be deleted, moved or copied. They can be also sent to server.
The selected rows can be got by GetSelRows method and used for any custom task. To find out what cells are selected read Selected attribute of the cell.
<Cfg> bool

Selecting

[1]
If selecting rows or cells is permitted.
To control how rows and cells can be selected by a user, assign the selecting actions to appropriate events.
By default is permitted selecting rows but not selecting cells and columns <Cfg Selecting='1' SelectingCells='0' ColSelecting='0'/>.
<Cfg> bool

SelectingText

[0]
If text selection in grid (standard browser behavior) by mouse is permitted.
To let a user to select text, there also must not be any drag action possible for the cell, otherwise the drag action is done.
If it is 1, there can be unwanted selection blinking during grid dragging and selection actions!
new 6.0 <Cfg> bool

SelectClass

[0]
If set to 1, selected cells can be highlighted also by CSS class attributes like color or font, defined in GxColorSelected CSS class in Grid.css.
If set to 0, selected cells are highlighted only by background color.
It is used for SelectingCells, selected rows are always highlighted by CSS class.
The value 1 can slow down selecting cells.
new 12.1 <Cfg> bool

SelectClassRow

[0]
If set, adds ...ClassSelected CSS class also to row HTML tag. For backward compatibility with TreeGrid before 12.0.
chg 11.0 upd 12.0 API event bool

OnSelect

(TGrid grid, TRow row, bool deselect, string[] Cols)
Called before the row or its cells are selected or unselected. Called before the selection state of the row or its cells is changed.
deselect is 0 if the row or cells will be selected, 1 if the row or cells will be unselected. Since 11.0 there is not used value 2.
(Since 11.0) Cols is a list of cells (column names) that will be changed (selected or unselected). It is set only if only some cells in the row will be changed.
(Since 12.0) If the whole column is selected, the row is null and Cols contains this only column.
(Since 9.1) Return true to suppress the action.
upd 12.0 API event bool

OnSelectAll

(TGrid grid, int select, int type)
Called before all rows, columns (since 12.0) or cells (since 12.0) in grid are selected or unselected.
type (since 12.0) what is selected, bit array, 1 - cells, 2 rows, 4 columns. Now the values 0, 3, 5, 6, 7 are not used.
select is 0 for unselect all, 1 select all, -1 invert all (rows only).
Return true to suppress the action.
new 11.0 upd 12.0 API method void

ClearSelection

(int type = 7)
Clears whole selection, all rows, columns and cells, including hidden rows and columns. It is always synchronous.
(Since 12.0) type is what to clear, bit array. 1.bit &1 - cells, 2.bit &2 - rows, 3.bit &4 - columns.
new 12.0 API event bool

IsSelected

(TRow row, string col)
Returns true if given cell or row (col is null) or column (row is null) is selected.
<Actions>

ClearSelection

Not assigned to any event
Clears whole selection, including hidden rows. It is always synchronous and never fails.
Add it to OnClickCell and OnClickOutside to clear selection after any click - to have not persistent selection.
For example <Actions OnClickCell='ClearSelection,FocusEdit' OnClickOutside='ClearSelection,Blur'/>
new 12.0 <Cfg> int

ClearSelected

[4]
When the whole row or column selection is cleared. For cell selecting use SelectHidden instead.
It affects also SearchAction Select.
It affects also SelectAll / DeselectAll / InvertAll actions, e.g. to affect only all visible rows, set ClearSelected='6'.
1.bit &1If selection is cleared for deleted rows / columns.
2.bit &2If selection is cleared for filtered rows / columns.
3.bit &4If selection is cleared for manually hidden rows / columns.
4.bit &8If selection is cleared for collapsed child rows.
new 12.0 <Cfg> int

SelectAllType

[0]
How selecting all rows and columns works.
1.bit &1The SelectAll / SelectAllCols button is switched on when all rows / columns are selected.
2.bit &2Unselecting single row or column or range of rows / columns will uncheck the SelectAll / SelectAllCols button.
3.bit &4 Selecting single row or column or range of rows / columns will check the SelectAll / SelectAllCols button when all rows / columns will be selected. Can be slow, iterates all rows for every select.
4.bit &8If the SelectAll / SelectAllCols is checked, the rows / columns on newly loaded or created pages will be selected.
5.bit &16If the SelectAll / SelectAllCols is checked, the newly added rows / columns will be selected.

Selecting rows

Selecting the whole rows

The whole rows selecting is permitted by Selecting attribute.
new 9.1 upd 9.3 <Cfg> int

SelectingSingle

[0]
If set to 1 (1.bit), only one row can be selected in grid. Selecting other row clears previously selected row.
(new 9.3) If set to 2 (2. bit), the selected row cannot be unselected. The grid will have always selected one row.
(new 9.3) If set to 4 (3. bit), it clears the row selected in grid data on start.
Set to 7 for all the three features.
<Cfg> bool

SaveSelected

[0]   Saves information to cookies
If set to 1, saves all Selected row ids to cookies. Therefore it remembers all Selected rows on the client.
Remember, cookies are limited to 4096 bytes for the whole page, so use this setting only for very small tables or use PersistentCfg.
Use also as small row ids as possible (the amount of cookie space is used: id+1 bytes per selected row).
<Cfg> bool

CalculateSelected

[0]
If there are formulas in grid that use selected rows.
If set, all calculated rows are recalculated after selection changes.
upd 12.0 <I> int

CanSelect

[1]
If row and its cells can be selected.
0The row and its cells cannot be selected by any method.
1The row and its cells can be selected.
2(new 12.0) Only the whole row can be selected.
3(new 12.0) Only the row individual cells can be selected.
4(new 12.0) The row and its cells cannot be selected by any method, but the row cells are marked selected if the whole column is selected.
Default value is 1 for all variable rows and 0 for fixed and space rows.
upd 12.0 <Header> bool

CanSelect

[1]
Deprecated since 12.0. Use Panel Buttons or Panel value instead to define the panel buttons for header row.
If the Panel SelectAll button is enabled. Header row itself can never be selected.
upd 12.0 <I> int

Selected

[0]
It is set to 1 when the row is selected. It is colored yellow (by default setting in Grid.css).
It is set to 2 when the row contains some but not all selected cells.
(Since 12.0) It is set to 3 if the row is selected and it also contain some selected cells for SelectingCells = 3.
There can be more selected rows in the grid. Don't confuse selected and focused row. The focused row is the row with cursor.
upd 9.2 <C> int

Select

[1]
If the default Panel button Select is visible. This button is hidden also if <Cfg Selecting="0"/>. This button is inactive when the row has CanSelect='0'.
Click to this button selects the whole row. Dragging this button selects rows range.
(Since 9.2) If set to 2, it is similar to 1, but the button is checked only if the whole row is selected, not only individual cells.
Used only if the Panel Buttons and the cell value are not set.
upd 12.0 API method TRow[ ]

GetSelRows

(int type = null, string attr = null, bool first = null)
Returns all selected rows in JavaScript array. They are sorted according to their position in grid.
type (since 12.0) is bit array to choose rows to return, prior 12.0 and default value of type is 28 as 4+8+12.
type&3 = 0 return rows with Selected&1 if SelectingCells ==3 otherwise return rows with any Selected set.
type&3 = 1 return rows with Selected&1, type&3 = 2 return rows with Selected&2, type&3 = 3 return rows with any Selected set.
type&4 = 4 including fixed rows, type&8 = 8 including selected children of selected parent.
The iterated rows are affected also by ClearSelected setting.
(new 12.0) If set attr, returns only rows that have this attribute set, e.g. "CanDelete".
(new 12.0) If set first = 1, returns true if some row is selected, otherwise false. If set first = 0, returns true if some row is unselected, otherwise false.
If SelectingCells is permitted, to find out what cells are selected read Selected attribute of the cell: if(row[col+"Selected"]) ...
upd 12.0 API method bool

SelectRow

(TRow row, bool select = null, bool test = 0)
Selects / unselects whole row. Select the row if select = 1, unselects if select = 0.
If select = null and the row has at least one selected cell, it is unselected, otherwise it is selected. For SelectingCells = 3 just negates the whole row selection.
(Since 12.0) If set test = 1, does not change anything, just test if the selecting is possible.
Returns true if selection changed.
upd 6.0 API method void

SelectAllRows

(int select = null)
Selects / unselects all rows.
If select = 1 selects all rows, select = 0 unselects all rows, select = -1 invert all rows (every selected row will be unselected and vice versa)
If select = null and some row is selected, unselects all rows, otherwise it selects all rows.
new 12.0 API variable bool

AllSelected

If all rows are selected or unselected. Can be 1 for all rows selected, 0 for no row selected or null for other states or unknown state.
Depends on SelectAllType setting.
<Actions>

SelectRows

Not assigned to any event, can be assigned to OnDrag... events only
Starts selecting range of rows by mouse dragging. Fails if Selecting is 0.
<Actions>

DeselectRows

Not assigned to any event, can be assigned to OnDrag... events only
Starts deselecting range rows by mouse dragging. Fails if Selecting is 0.
<Actions>

InvertRowsFirst

Assigned to OnCtrlDragRow event, can be assigned to OnDrag... events only
Starts selecting or deselecting range of rows by mouse dragging. Fails if Selecting is 0.
If the actual row is selected (at least one cell), starts deselecting, otherwise starts selecting.
<Actions>

SelectOddRows

Not assigned to any event, can be assigned to OnDrag... events only
Starts selecting individual rows - every row under mouse cursor is selected. Fails if Selecting is 0.
<Actions>

DeselectOddRows

Not assigned to any event, can be assigned to OnDrag... events only
Starts deselecting individual rows - every row under mouse cursor is deselected. Fails if Selecting is 0.
<Actions>

InvertOddRows

Assigned to OnDragPanelSelect event, can be assigned to OnDrag... events only
Starts inverting selection of individual rows - every row under mouse cursor changes its selection state. Fails if Selecting is 0.
<Actions>

SelectRow ...F

Assigned to OnSpace, OnCtrlClickCell and OnClickPanelSelect events
Selects actual or focused row. Fails if the row is already selected, cannot be selected or Selecting is 0.
<Actions>

DeselectRow ...F

Assigned to OnSpace, OnCtrlClickCell and OnClickPanelSelect events
Deselects actual or focused row. Fails if the row is not selected, cannot be selected or Selecting is 0.
To invert selection action use "SelectRow OR DeselectRow".
<Actions>

SelectFocusedRows

Not assigned to any event
Selects all focused rows. Fails if no row is focused or Selecting is 0.
<Actions>

DeselectFocusedRows

Not assigned to any event
Deselects all focused rows. Fails if no row is focused or Selecting is 0.
<Actions>

InvertFocusedRowsFirst

Not assigned to any event
Selects or deselects all focused rows. Fails if no row is focused or Selecting is 0.
If the first focused row is selected, deselects all, otherwise selects all.
<Actions>

SelectRowRange

Not assigned to any event
Selects all rows between focused row and actual row, including both rows. Fails if Selecting is 0.
<Actions>

DeselectRowRange

Not assigned to any event
Deselects all rows between focused row and actual row, including both rows. Fails if Selecting is 0.
<Actions>

InvertRowRangeFirst

Assigned to OnShiftClickCell event
Selects or deselects all rows between focused row and actual row, including both rows. Fails if Selecting is 0.
If the focused row is selected, deselects all, otherwise selects all.
<Actions>

SelectAll

Assigned to OnCtrlSpace and OnClickHeaderSelect events
Selects all visible rows. Fails if all rows are selected or cannot be selected or Selecting is 0.
This action can be asynchronous!
<Actions>

DeselectAll

Assigned to OnCtrlSpace and OnClickHeaderSelect events
Deselects all visible rows. Fails if no rows is selected or cannot be selected or Selecting is 0.
To always deselect all rows you should use ClearSelection instead!
This action can be asynchronous, so you should not call any other select actions after this in the same event!
chg 12.0 <Actions>

InvertAll

Assigned to OnCtrlClickHeaderSelect events
Inverts whole selection, unselects all visible selected rows and selects all unselected rows. Fails if Selecting is 0.
Since 12.0 it fails if all rows are selected or unselected.
It is not the same as "SelectAll OR DeselectAll"!

Selecting cells

Selecting individual cells or cell ranges

chg 12.0 <Cfg> int

SelectingCells

[0]
If selecting individual cells or cells ranges is permitted and how it affects row and column selecting. It is disabled by default!

0No individual cells can be selected. Only whole rows or whole columns can be selected.
The rows and columns can have set Selected = 1 or 0, if they are selected or unselected.
 
1Shared cell and row/column selecting. Individual cells can be selected. Selecting row or columns selects all its cells.
The row has set Selected = 0, if it contains no cell selected.
The row has set Selected = 1, if it contains all cells selected.
The row has set Selected = 2, if it contains some cells selected and some unselected. And the selected individual cells have set its own Selected = 1 attribute.
The column has never set its Selected attribute in this case. Selecting or unselecting the whole column changes all rows Selected attributes and all cells Selected attributes.
 
2Only cell selecting. (Since 11.0, changed 12.0) Like 1, but row has never set Selected = 1 for all cells selected.
The row has set Selected = 0, if it contains no cell selected.
The row has set Selected = 2, if it contains some or all cells selected. And the selected individual cells have set its own Selected = 1 attribute.
The column has never set its Selected attribute in this case. Selecting or unselecting the whole column changes all rows Selected attributes and all cells Selected attributes.
 
3Independent cell and row/column selecting. (Since 12.0)
The individual cells can be selected or unselected independently on the whole row and column selection state.
The row has set Selected = 0, if it is not selected and has also no selected individual cells.
The row has set Selected = 1, if it is selected and has no selected individual cells.
The row has set Selected = 2, if it is unselected and contains some or all cells selected. The selected individual cells have set its own Selected = 1 attribute.
The row has set Selected = 3, if the row is selected and also has some or all its cell are selected.
The column has set its Selected to 1 or 0, if it is selected or unselected, regardless on selection state of its individual cells.
new 11.0 <Cfg> int

SelectingFocus

[0]
If set, automatically selects focused area. If set to 2 it also select focused single cell.
After every focused cell / focused area change clears all selected cells in grid.
Must be set also Selecting and SelectingCells.
new 12.0 <Cfg> int

SelectHidden

[0]
If cells in hidden rows and columns will be selected, bit array. For whole rows or columns selection use ClearSelected
1.bit &1Cells in hidden rows can be selected.
2.bit &2Cells in collapsed children can be selected.
3.bit &4Cells in hidden columns can be selected.
upd 12.0 <I> int

Selected

[0]
It is set to 1 when the row is selected. It is colored yellow (by default setting in Grid.css).
It is set to 2 when the row contains some selected cells.
(Since 12.0) It is set to 3 if the row is selected and it also contain some selected cells for SelectingCells = 3.
There can be more selected rows in the grid. Don't confuse selected and focused row. The focused row is the row with cursor.
<I <cell> bool

Selected

[0]
It is set to 1 when the cell is selected. In this case the row has set Selected = 2 or 3.
upd 12.0 <I> int

CanSelect

[1/0]
If row and its cells can be selected.
0The row and its cells cannot be selected by any method.
1The row and its cells can be selected.
2(new 12.0) Only the whole row can be selected.
3(new 12.0) Only the row individual cells can be selected.
4(new 12.0) The row and its cells cannot be selected by any method, but the row cells are selected if the whole column is selected.
Default value is 1 for all variable rows and 0 for fixed and space rows.
new 7.1 upd 12.0 <C> int

CanSelect

[1/0]
If column and its cells can be selected.
0The column and its cells cannot be selected by any method.
1The column and its cells can be selected.
2(new 12.0) Only the whole column can be selected.
3(new 12.0) Only the column individual cells can be selected.
4(new 12.0) The column and its cells cannot be selected by any method, but the column cells are selected if the whole row is selected.
Default value is 1 for all columns except Panel, ConstWidth and Index.
new 7.0 upd 11.0 API method [ ][ ]

GetSelRanges

(int rowtype = 0, int coltype = 0)
Returns all selected rectangles in table.
Returns it in two dimensional array: [ [toprow1,leftcol1,bottomrow1,rightcol1,rowpos1,colpos1,rowcount1,colcount1],[toprow2,leftcol2,bottomrow2,rightcol2, rowpos2,colpos2,rowcount2,colcount2],[toprow3,leftcol3,bottomrow3,rightcol3, rowpos3,colpos3,rowcount3,colcount3],...]
toprow / bottomrow are the TRow object, leftcol / rightcol are the column names of the range edges.
rowpos / colpos (new 11.0) are numbers as row / column position of top left corner of the range from grid top left corner. The rowpos includes only iterated rows due rowtype.
rowcount / colcount (new 11.0) are numbers as row / column count in the range. The rowcount includes only iterated rows due rowtype.
rowtype: 1 - ignores collapsed children (they need not be selected), 2 - separates ranges per root pages, 3 = 1+2
coltype (since 11.0): 0 - separates ranges per column page and section, 1 - separates ranges per column section (left/mid/right), 2 - does not separate ranges horizontally.
upd 12.0 API method int

SelectRange

(TRow row1, string col1, TRow row2, string col2, bool select, int type, bool test = 0)
Selects rectangular range of cells, including given cells.
If col1 and col2 are null, selects all rows in range row1 - row2 including, if row1 and row2 are null (since 12.0), selects all columns in range col1 - col2.
Otherwise it selects continuous range of cells between [row1,col1] [row2,col2].
If row1 is null, it is the first selectable variable row, if row2 is null, it is the last selectable variable row. If col1 is null, it is the first selectable column, if col2 is null, it is the last selectable column.
The first point [row1,col1] need not be the top left point.
select = 0 - unselects range, 1 - selects range, null (since 12.0) or 2 - unselects range if cell [row1,col1] is selected, otherwise selects the range.
type = bit array, &1 - selects only visible rows, &2 - ignores children of collapsed rows.
Since 12.0 returns count of affected rows or cells.
(since 12.0) for test = 1 does not change anything, just return the count of rows or cells that would be affected.
new 11.0 upd 12.0 API method bool

SelectCell

(TRow row, string col, bool select, bool test = 0)
Selects or unselects one cell. Select the cell if select = 1, unselects if select = 0. If select = null inverts the selection.
(Since 12.0) If set test = 1, does not change cell selection, but returns if selection is possible.
Returns true if selection changed.
<Actions>

SelectCells

Not assigned to any event, can be assigned to OnDrag... events only
Starts selecting rectangular range of cells by mouse dragging. Fails if Selecting or SelectingCells is 0.
<Actions>

DeselectCells

Not assigned to any event, can be assigned to OnDrag... events only
Starts deselecting rectangular range of cells by mouse dragging. Fails if Selecting or SelectingCells is 0.
<Actions>

InvertCellsFirst

Assigned to OnCtrlDragRow event, can be assigned to OnDrag... events only
Starts selecting or deselecting rectangular range of cells by mouse dragging. Fails if Selecting or SelectingCells is 0.
If the actual cell is selected, starts deselecting, otherwise starts selecting.
<Actions>

SelectCell ...F

Assigned to OnCtrlClickCell event
Selects actual or focused cell. Fails if the cell is already selected, row cannot be selected or Selecting or SelectingCells is 0.
<Actions>

DeselectCell ...F

Assigned to OnCtrlClickCell event
Deselects actual or focused cell. Fails if the cell is already selected, row cannot be selected or Selecting or SelectingCells is 0.
To invert selection action use "SelectCell OR DeselectCell".
<Actions>

SelectCellRange

Not assigned to any event
Selects all cells in rectangular range between focused cell and actual cell. Fails if Selecting or SelectingCells is 0.
<Actions>

DeselectCellRange

Not assigned to any event
Deselects all cells in rectangular range between focused cell and actual cell. Fails if Selecting or SelectingCells is 0.
<Actions>

InvertCellRangeFirst

Assigned to OnShiftClickCell event
Selects or deselects all cells in rectangular range between focused cell and actual cell. Fails if Selecting or SelectingCells is 0.
If the focused cell is selected, deselects all, otherwise selects all.
new 12.0 <Actions>

SelectRowCells ...F

Not assigned to any event
Selects all cells in actual or focused row. Fails if there is no cell to select.
new 12.0 <Actions>

DeselectRowCells ...F

Not assigned to any event
Unselects all cells in actual or focused row. Fails if there is no cell to unselect.
new 12.0 <Actions>

SelectColCells ...F

Not assigned to any event
Selects all cells in actual or focused column. Fails if there is no cell to select.
new 12.0 <Actions>

DeselectColCells ...F

Not assigned to any event
Unselects all cells in actual or focused column. Fails if there is no cell to unselect.
new 12.0 <Actions>

SelectAllCells

Not assigned to any event
Selects all cells in grid.
new 12.0 <Actions>

DeselectAllCells

Not assigned to any event
Unselects all cells in grid.

Selecting columns

Selecting the whole columns

new 12.0 <Cfg> int

SelectingCols

[0]
If the whole columns can be selected. It does not affect selecting individual cells in the columns, see SelectingCells.
0 - no, 1 - yes and colored (can be slow for large grids), 2 - yes, but not colored (changes only Panel Select button, if any).
new 7.1 upd 12 <C> int

CanSelect

[1/0]
If column and its cells can be selected.
0The column and its cells cannot be selected by any method.
1The column and its cells can be selected.
2(new 12.0) Only the whole column can be selected.
3(new 12.0) Only the column individual cells can be selected.
4(new 12.0) The column and its cells cannot be selected by any method, but the column cells are selected if the whole row is selected.
Default value is 1 for all columns except Panel, ConstWidth and Index.
new 12.0 <C> bool

Selected

[0]
It is set to 1 when the whole column is selected. It is not affected by individual selected cells in the column.
It is not used, when set SelectingCells = 1 or 2.
new 12.0 API method bool

SelectCol

(string col, bool select = null, bool test = 0)
Selects / unselects whole column if SelectingCols = 1 and SelectingCells = 0 or 3. Otherwise it selects or unselects all the column cells, if set SelectingCells.
Selects the column if select = 1, unselects if select = 0 or changes the column selectiong if select = null.
If set test = 1, does not change anything, just test if the selecting is possible.
Returns true if selection changed.
new 12.0 API method string[ ]

GetSelCols

(string attr = null, bool first = null)
Returns all columns in grid with Selected = 1.
If set attr, returns only columns that have this attribute set, e.g. "CanDelete".
If set first = 1, returns true if some column is selected, otherwise false. If set first = 0, returns true if some column is unselected, otherwise false.
The iterated columns are affected also by ClearSelected setting.
new 12.0 API variable bool

AllColsSelected

If all columns are selected or unselected. Can be 1 for all columns selected, 0 for no column selected or null for other states or unknown state.
Depends on SelectAllType setting.
new 12 <Actions>

SelectCols

Not assigned to any event, can be assigned to OnDrag... events only
Starts selecting range of rows by mouse dragging. Fails if Selecting is 0.
new 12 <Actions>

DeselectCols

Not assigned to any event, can be assigned to OnDrag... events only
Starts deselecting range rows by mouse dragging. Fails if Selecting is 0.
new 12 <Actions>

InvertColsFirst

Assigned to OnCtrlDragRow event, can be assigned to OnDrag... events only
Starts selecting or deselecting range of rows by mouse dragging. Fails if Selecting is 0.
If the actual row is selected (at least one cell), starts deselecting, otherwise starts selecting.
new 12 <Actions>

SelectOddCols

Not assigned to any event, can be assigned to OnDrag... events only
Starts selecting individual columns - every column under mouse cursor is selected. Fails if Selecting is 0.
new 12 <Actions>

DeselectOddCols

Not assigned to any event, can be assigned to OnDrag... events only
Starts deselecting individual columns - every column under mouse cursor is deselected. Fails if Selecting is 0.
new 12 <Actions>

InvertOddCols

Assigned to OnDragPanelColSelect event, can be assigned to OnDrag... events only
Starts inverting selection of individual columns - every column under mouse cursor changes its selection state. Fails if Selecting is 0.
upd 12.0 <Actions>

SelectCol ...F

Not assigned to any event
Since 12.0 Selects the whole column if SelectingCols = 1 and SelectingCells = 0 or 3.
Otherwise (or prior to 12.0) it selects all the column cells, if set SelectingCells - like SelectColCells.
upd 12.0 <Actions>

DeselectCol ...F

Not assigned to any event
Since 12.0 Unselects the whole column if SelectingCols = 1 and SelectingCells = 0 or 3.
Otherwise (or prior to 12.0) it unselects all the column cells, if set SelectingCells - like SelectColCells.
<Actions>

SelectFocusedCols

Not assigned to any event
Selects all focused columns. Fails if no columns is focused or SelectingCols is 0.
<Actions>

DeselectFocusedCols

Not assigned to any event
Deselects all focused columns. Fails if no columns is focused or SelectingCols is 0.
<Actions>

InvertFocusedColsFirst

Not assigned to any event
Selects or deselects all focused columns. Fails if no columns is focused or SelectingCols is 0.
If the first focused columns is selected, deselects all, otherwise selects all.
new 12.0 <Actions>

SelectColRange

Not assigned to any event
Selects all columns between focused column and actual column, including both columns.
new 12.0 <Actions>

DeselectColRange

Not assigned to any event
Deselects all columns between focused column and actual column, including both columns.
new 12.0 <Actions>

InvertColRangeFirst

Not assigned to any event
Selects or deselects all columns between focused column and actual column, including both columns.
If the focused column is selected, deselects all, otherwise selects all.
new 12.0 <Actions>

SelectAllCols

Not assigned to any event
Selects all visible rows. Fails if all rows are selected or cannot be selected or Selecting is 0.
new 12.0 <Actions>

DeselectAllCols

Not assigned to any event
Deselects all visible rows. Fails if no rows is selected or cannot be selected or Selecting is 0.