DHTMLX Docs & Samples Explorer

Dynamical Loading

Dynamical Loading mode allows to load data not all at once, but partially, by client side request ( which decrease initial loading time and decrease loading of server )

  • grid - smart rendering and paging modes
  • treegrid - dynamic branch loading mode
  • tree - dynamic branch loading mode
  • combo - partial autocomplete ( you need not it for normal autocomplete)

There are 2 properties that enable dynamic loading: EnableDynamicLoading (for dhtmlxTreeConnector and dhtmlxTreeGrid connector) and SetDynamicLoading(int) (for dhtmlxGridConnector and dhtmlxComboConnector). EnableDynamicLoading allows or disables dynamic loading of child items (rows, nodes), thus it is available only for dhtmlxTree and dhtmlxTreeGrid connectors. SetDynamicLoading in its turn sets number of items loaded per single requests. Only list controls are using it.

EnableDynamicLoading usage example:

            dhtmlxTreeConnector connector = new dhtmlxTreeConnector(/*.....*/);
            connector.EnableDynamicLoading = true;//enable dynamic branches loading

SetDynamicLoading usage example:

            dhtmlxGridConnector connector = new dhtmlxGridConnector(/*.....*/);
            connector.SetDynamicLoading(30);//enable partial grid loading (30 records per request)

To work correctly, related mode need to be enabled on client side as well ( for grid - smart rendring | paging enabled, for tree|treegrid - dynamical loading enabled, for combo - autocomplete enabled )

Control of dyn. loading for Tree and TreeGrid

Normally connector make all operations automatically, and need no customization. Check for child nodes/rows existance is also built into connector. If for some reasons you need to customize this check, you can attach event handler to RequestHasChildren event for Tree or TreeGrid connectors. Handler will receive reference to node/row is being checked and you can assign HasChildren property value depending on your own logic.

            dhtmlxTreeGridConnector connector = new dhtmlxTreeGridConnector(/*...*/);
            connector.RequestHasChildren += new EventHandler<RequestChildrenEventArgs<dhtmlxTreeGridDataItem>>(connector_RequestHasChildren);
 
            void connector_RequestHasChildren(object sender, RequestChildrenEventArgs<dhtmlxTreeGridDataItem> e)
            {
                if (TodayIsMonday)
                    e.HasChildren = false;//no children on mondays
                else
                    e.HasChildren = true;
            }