News in version
TreeGrid Gantt chart SpreadSheet Examples Documentation Download Development Licensing Prices References Contacts Buy Try it free
Documentation
Search in documentation
TreeGrid versions compatibility

Changes log (txt file) Using custom CSS from 13.3 to 14.0 Upgrading from 9.3 to 10.0 Upgrading from 5.9 to 6.0

Using in JavaScript frameworks

Angular Ember Express React Svelte Vue Other frameworks NodeJS server SalesForce LWC

Creating grid

Simple examples Basic information Creating grid Deleting grid Reloading grid Rendering grid Accessing grid by API

Data & communication
Data communication with server

Communication types AJAX communication AJAX SOAP envelope Submit communication Directly included data Data from JavaScript Cross domain / local load by JSONP Sessions (AJAX) Server response (AJAX) Synchronous communication (AJAX) Caching (AJAX) API (AJAX)

Download data

Settings for data download Layout XML structure Data XML structure

Upload data

Settings for data upload API for upload XML structure sent to server

Changing data from server

XML structure of download changes XML structure of request for a cell Synchronizing data with server

Input / output data formats

Complete list of tags Internal XML format Short XML format Extra short XML format DTD XML format JSON format

Cells
Cell basics

Cell type Cell format Dynamic format Dynamic type Cell value Reading / writing attributes by API Cell HTML Cell default Range or more values in one cell Cell with link URL Cell hint Cell tooltip / title Cell popup menu

Cell editing and changing values

Cell editability Dynamic editing Locking Defaults list Suggest list (auto complete) Tags input Changing cell value Mass cell change Clearing cells Editing cells Controlling <input> tag by JavaScript Input validation and restrictions Side checkbox Cell selecting

Calculations - cell formulas

Basics Formulas Mathematical functions Aggregate functions Special functions for actions Custom functions

Calculations - editable cell formulas

Basics Suggest list (auto complete) Defined names Actions for choosing cells Conditional functions Lookup functions Cell reference functions Logical functions Informational functions Mathematical functions Trigonometry functions Rounding numbers Number conversions String functions Date functions Summary functions Custom functions

Cell side buttons

Introduction Right side Button Left side Icon

Cell spanning

Column span Row span Dynamic spanning

Cell style and color

Basic grid style Sizing and scaling - responsive design Dynamic cell style attributes Cell CSS class Cell background color Dynamic cell border Cell HTML style Row color alteration Cell mouse cursor

Editable cell images

Insert image Edit image

Cell types
Automatic type - Auto String - Text, Lines & Pass
Number - Int & Float

Format Localization

Date and time - Date

Format Calendar component Dates dialog Localization

List & combo - Enum & Radio

Introduction Definition Related lists Enum specific Radio specific

Checkbox - Bool
Action button - Button

Introduction Basic clickable button Switch button Radio / tab button Menu button Combo switch button Combo radio / tab button Special Space rows with buttons

Panel with more buttons - Panel

Definition Standard fast panel Custom panel

HTML and special types

Html type EHtml type (editable) Icon type Abs type List type Editable Link type Editable Img type DropCols type Upload File type

Columns

Column basics Column index Column visibility Column visibility menu Column selecting Column tree Auto column tree Column position and moving Column adding and copying Column deleting Column width Column API

Rows
Row basics

Rows by functionality Rows by position Row name Row id Row index

Default rows

Description Example of default rows Example of changing default row Attributes

Row tree

Tree attributes Actions & API for expand / collapse

Row identification

Setting row id attribute Row id attribute in tree Row id created from cell values API for row ids

Row visibility
Row adding and copying

Five ways of adding rows to grid Adding and copying restrictions Adding new empty rows Copying existing rows

Row deleting Row moving and dragging Row selecting Row height Row API Space rows
Features
Sorting rows

Sort settings Controlling sort position Comparing strings Sorting actions Sorting API

Grouping rows to tree

Group settings Creating groups Comparing strings Created group rows <D Group='1'/> User interface to choose grouping Grouping actions and API

Filtering rows

Filter settings Comparing strings User interface to choose filter Filter actions and API

Searching in rows and cells

Search settings User interface for search Search actions and API

Printing grid

Print settings Choosing items to print Page size Print API

Print / export to PDF

Introduction Client side settings Printing options Client side API Server side API Data sent from client to server

Export to Excel or CSV

Introduction and export types Basic settings Styling export XLSX export Gantt export CSV export Old XLS / XHTML export Export API Communication with server Client export Server export

Import from Excel

Basic settings Sheets manipulation

Copy & paste rows via clipboard

Copy & paste permissions Copying to clipboard Pasting from clipboard

Master - detail grids

Introduction External master - detail grids Nested master - detail grids Synchronizing grids Other attributes for master - detail

Pivot tables

Pivot attributes & API Pivot formulas

External objects (custom JavaScript objects) Undo & Redo
Gantt and bar chart
Gantt objects

Gantt objects list Display settings Edit settings

Main bar

Definition of main bar and plans Main bar as Task Edit settings Main bar content and side html Tip on mouse hover Vertical position and height Style specific attributes API to manipulate Main bars Actions Side text (deprecated) Real Flow (deprecated)

Run bar

GanttRun Definition Extended definition Run bar as Task Edit settings Save format Selecting Run boxes Run box content and side html Tip on mouse hover Box identification Vertical position and height Style specific attributes Overlaid (Error) boxes Containers for more boxes Dragging - moving and resizing API to manipulate Run boxes Actions Run special formulas

Summary task

Main for Main Main for Run Editable Main Editable Run

Gantt icons - Flag & Point

Flag - icon with text Point - math points

Gantt display objects

Header - column captions Cell and column Background Vertical movable Line Mark & Progress line

Gantt zoom

Zoom options Chart size limits Zoom selection Paging in Gantt chart

Dependency, constraints & schedule

Introduction Data units Defining dependencies Dependency colors and shapes Changing dependencies Correcting dependencies Scheduling algorithm Project date constraints Task date constraints Critical path - Slack (Float)

Gantt calendars

Global base calendar Local calendar Calendar list Calendars dialog Other settings

Gantt resources

Resources list Resources assign Resources filter Resources calculations Availability chart Resource usage chart Generated resource usage chart

Gantt popup menu Gantt API
Line and XY points charts

Charts in grid cells Chart JSON definition Base chart settings Basic attributes Size Axis and caption Individual chart lines Data sources Visual settings API for standalone usage

Paging in large grids
Paging root rows

Paging types and attributes Auto adding root pages API for paging

Pager components

Side pager Side pager type Pages Side pager type Gantt Side pager type Custom Pager with navigation buttons & edit Pager as list of page indexes

Paging in tree

ChildPaging - load / render on expand MaxChildren - limit children count ChildParts - load / render on scroll

Paging columns

Paging types and attributes Auto adding column pages API for column paging

Server paging

Server paging for root rows Server communication in root paging Root paging in very large tables Server paging in tree Server communication in tree paging XML Request for Data in root paging XML Download Data in root paging XML Request for root Page / children XML Download root Page / children API for server paging

TreeGrid DLL/SO for server paging

Introduction Compatibility with TreeGrid control Using TreeGrid server DLL/SO ASP.NET C# ASP.NET VB PHP JSP Java TreeGrid server concepts Function reference Calculations

JSON menus and dialogs
JSON menu description JSON menu definition example
Menu settings

Base attributes Visual settings Key navigation Behavior Size and scroll

Menu item settings

Base attributes Clickable item Inactive caption Collapsible sub level Popup sub menu Columns Bool item Enum item Edit item

Custom menu in JavaScript

Show custom menu Custom menu position Custom menu advanced settings Custom menu JavaScript events Custom menu JavaScript methods

Calendar dialog Custom calendar & JavaScript events Custom dialog in JavaScript
Global grid settings
Grid size and scroll

Default behavior Maximize grid height and width Update size according to the content Let a user to control the grid size Widths of individual sections Other scrolling attributes and API

Media rules - responsive design
Languages

Language & regional setup (Text.xml) Translate texts dynamically Change language

Grid cursor - Focus & hover

Focused cell and row Focused cell range Move and copy focused cells Filling cell values by dragging Tabulator navigation Key navigation Cursor look - focus & hover

Selecting rows, cells and columns

Selecting base Selecting rows Selecting cells Selecting columns

Global settings

Status messages Configuration menus Configuration menu - options Configuration menu - columns Configuration menu - print / PDF Configuration menu - export Default toolbar Useful API function Help file

Animations

Animations base Row animations Column animations Cell animations Animations for undo / redo Animations for server side changes Dialog animations

Grid configuration in cookies
Mouse & key events & actions

List of event handler types TreeGrid mouse events Mouse event names Key and mouse button prefixes Touch event names Event targets Assigning event actions / callbacks Event action parameters Action name suffix Calling actions from JavaScript Creating custom actions Focused vs. Actual cell TreeGrid key events JavaScript API events

Mouse API event TreeGrid files
Debugging and testing

Debug window Automated testing

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!
If it is 1, there can be problem in Firefox in dragging column caption for grouping, add <Header OnMouseDown='1'/> to solve it!
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 16.0 API event bool

OnSelect

(TGrid grid, TRow row, bool deselect, string[] Cols, bool test)
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 16.0) The test is set when only testing possibility of selecting the row or its cells.
(Since 9.1) Return true to suppress the action.
new 16.0 API event void

OnSelected

(TGrid grid, TRow row, bool deselect, string[] Cols)
Called after the row or its cells are selected or unselected.
deselect is 0 if the row or cells have been be selected, 1 if the row or cells will be unselected.
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.
If the whole column is selected, the row is null and Cols contains this only column.
upd 16.0 API event bool

OnSelectAll

(TGrid grid, int select, int type, bool test)
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).
(Since 16.0) The test is set when only testing possibility of selecting all.
Return true to suppress the action.
new 16.0 API event void

OnSelectedAll

(TGrid grid, int select, int type)
Called after all rows, columns or cells in grid are selected or unselected.
type - 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).
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 method 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.

To permit selecting one row by click to panel and selecting multiple rows by ctrl+click use such actions instead:
<Actions OnClickPanelSelect="DeselectRow OR (ClearSelection,SelectRow)" OnCtrlClickPanelSelect="DeselectRow OR SelectRow"/>
<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 default value of type is 15 as 1+2+4+8.
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 without 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 ...FARO

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 ...FARO

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 ...FARO

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

DeselectFocusedRows ...FARO

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

InvertFocusedRowsFirst ...FARO

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 upd 15.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.
 
4Independent cell and row/column selecting, but shared functionality. (Since 15.0)
The Selected attribute are set the same as in 3.
All the cell ranges actions set the column or row attribute instead of individual cells if the column or row is selected.
new 11.0 upd 15.0 <Cfg> int

SelectingFocus

[0]
If set, automatically selects focused area. Bit array.
1. bit &1 - selects the focused area.
2. bit &2 - also selects focused single cell.
3. bit &4 - (new 15.0) if focused whole rows and columns, sets Selected attribute of the row and column, not in cells.
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 ...FAO

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 ...FAO

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 ...FARWO

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 ...FARWO

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 ...FACWO

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 ...FACWO

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 ...FACO

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 ...FACO

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 ...FACO

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

DeselectFocusedCols ...FACO

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

InvertFocusedColsFirst ...FACO

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.