Paging columns

TreeGrid documentation

TreeGrid can automatically split middle columns to pages and displays them only on demand - when the page becomes visible due scroll.

new 7.0 <Cfg> int

ColPaging

[0]
Method of column paging used.

0No paging
All columns are in one page. All columns are rendered on start. This means slow start and fast use.
It is good for small grids, up to about 30 columns.

1Show all
Column pages are automatically created, but all are rendered on start.
It is good for medium grids, 30 - 100 columns, to let users to easy navigate between parts in grid.
It can be used also to avoid browser "Slow script" message when rendering too many rows without paging.

2Client paging     (auto - fully done by TreeGrid)
Column pages are automatically created.
The column page is rendered only when it is visible in window by scrolling.
It is good for large grids with more than 100 columns. All functions still work offline, include sorting, filtering, grouping, searching and calculations.
The client paging does not require any server side support.
new 9.3 <Cfg> bool

ColPagingFixed

[1]
If set to 0 (and set ColPaging>0), it will page only variable body rows, not fixed rows.
Usable especially for spanned header or other fixed rows among column pages.
If the columns are not paged in IE8 there is a limit for number of columns 500 when WidthPad is set and up to 1000 without WidthPad set.
new 7.0 <Cfg> int

ColPageMin

[10]
Count of column in the first (left) page.
This page is rendered always on start, so it is displayed immediately with grid.
It can be set to 0 to not render any column on start.
new 7.0 <Cfg> int

ColPageLength

[10]
Count of columns per page, except the first one and the last one.
Exact count of columns in page can differ due to adding or deleting columns.
Every page must contain at least one column otherwise it is deleted.
<Cfg> int

PageTime

[200]
How long (in ms) must be page visible (by scroll) before it renders.
new 7.0 <Cfg> int

MaxColPages

[20]
Maximum rendered column pages in grid, only for ColPaging = '2'.
When grid contains more rendered pages, the pages longer not accessed are cleared (only in HTML, pages data are not affected).
Used to not slow down the browser when too many HTML tags are displayed.
For large pages you can lower this value.
The actually displayed pages are never cleared.
Set it to 0 to disable clearing pages.
new 9.0 <Cfg> int

RemoveUnusedPages

[2]
If set to 0, it never removes unused root pages, child pages/parts and column pages.
If set to 2, it removes unused pages due MaxPages, MaxChildParts and MaxColPages.
If set to 3, it removes also data of unused root pages or child pages.
It removes only page or child page that does not contain changed rows.
<C> int

Width

Saved to cookies, avoid it by <C WidthLap='1'/>
Column width in pixels. It is outer width including all side buttons, cell border and padding.
Set it when there are many columns in grid to speed up grid loading.
new 7.0 <C> bool

Prepared

If all row values in this column are prepared and do not need to be updated on start.
Use it when the grid has many rows to speed up grid loading.
The preparing values does these things:
- Date type cell values set as strings are converted to numbers as count of milliseconds since 1/1/1970.
- Int and Float types empty values are converted to zero if set CanEmpty.
- Select type is converted to Button='Defaults'
- For Calculated rows without CalcOrder is the CalcOrder created from all (not Prepared) columns with Formula attribute.
You can set Prepared='1' for columns that does not contain Date, Int, Float and Select types or the Date are set as numbers or the Float and Int are not source of calculations.

Auto adding column pages

Automatic adding new column pages on scroll

new 12.0 <Cfg> bool

AutoColPages

[0]
If set, adds new column pages to the end of grid when it is scrolled right to the end of grid.
The columns gets their Def = "Auto".
To use it, must be set also ColPaging to 1 or 2.
Printed, exported and uploaded are columns to last not empty column, see GetLastDataCol API method.
new 12.0 <Cfg> int

RemoveAutoColPages

[0]
If the empty added column pages will be automatically removed when the grid is scrolled up.
0 - never
1 - yes, the removed pages will be placed to RemovedColPages and will be recreated from this stack. Useful to preserve the names of the new columns and for Undo.
2 - yes, the removed pages will be thrown out.
The page is removed only if cells in all columns on the page and on all next pages are empty (values and EditAttrs).
new 12.0 API event void

OnColPageAdded

(TGrid grid, int pos)
Called after new column page is added due AutoPages.
pos is column page index in ColNames.
new 12.0 API event bool

OnRemoveAutoColPage

(TGrid grid, string[] cols)
Called before removing given column page due RemoveAutoColPages.
The cols is an array contains column names on the page.
Return true to not remove this page and any of the previous pages.
new 12.0 API variable string[][]

RemovedColPages

The removed pages due RemoveAutoColPages.
Can be set to null, to permanently remove these pages.
It is two dimensional array, the first dimension are the pages and they contain the column names. The order of the pages is backward!
The columns can be iterated in such loop: for(var P=grid.RemovedColPages,i=P?P.length-1:-1;i>=0;i--) for(var j=0;j<P[i].length;j++){ var col = P[i][j]; ... }
new 13.2 API method void

AddAutoColPages

()
Adds one new column page. The page should be immediately shown otherwise it is later deleted.

API

new 7.0 API event void

OnRenderColPageStart

(TGrid grid, int sec)
Called before rendering of the column page.
The sec is the section index to ColNames.
new 7.0 API event void

OnRenderColPageFinish

(TGrid grid, int sec)
Called the column page is fully rendered and ready.
The sec is the section index to ColNames.
new 7.0 upd 11.0 API method void

AddColPage

(string[] names, string def = "C", bool updatefixed = 1)
Adds new column page to the end of variable columns.
names is list of the column names to add. It can be also number as count of the columns to add.
(since 11.0.) the individual names item can be object instead of string, with defined column attributes, it must have set at least Name attribute.
e.g. AddColPage(["Col1",{Name:"Col2",CanEdit:0},"Col3",{Name:"Col4",Def:"Special"}]);
def is name of default column to use for all the columns to fill their attributes.
updatefixed (since 11.0) if fixed rows will be refreshed (for ColPagingFixed=0). Set it to 0 in all calls except the last one to speed up the function when adding more column pages at once.
After the method finishes, the columns are not displayed yet, so they can be changed or the row values in the columns can be filled directly.
new 11.0 API method void

RemoveColPage

(int section, int count = 1)
Removes given column page and deletes all its column from data.
section is column section number as in ColNames.
The fixes column page (section = 0 and section = ColNames.length-1) cannot be removed.
The count can be set to remove more adjacent pages at once.
new 7.0 API method void

ShowColPages

( )
Starts loading and rendering displayed column pages. Asynchronous.
Call this method if pages are not rendered automatically when you do some unusual changes in grid.
new 10.0 API method void

CreateColPages

( )
Re-creates the column pages, re-places the columns to the column pages.
You can call it after adding many new not displayed columns.
You must call Render / Rerender method after calling the CreateColPages.
For example how to add many columns to already rendered grid fast:
for(var i=0;i<500;i++) G.AddCol('c'+i,1,null,{Width:50,Type:'Html'}).Visible = 1;
G.CreateColPages(); G.Rerender();