News in version
TreeGrid Gantt chart SpreadSheet Examples Documentation Download Development Licensing Prices References Contacts Buy Try it free
Live examples
Grids and tree grids

Complex grid - the first one Complex grid - RTL mode Large table with paging Large table without paging Multiline & images - books Positions and spanning Photo album - images PivotTable - 2D grouping Schools - list and ratings File and directory browser Extended JavaScript API Sharing & synchronization 1 000 000 rows, 1 000 cols


Microsoft Excel sheet TreeGrid sheet TreeGrid sheet - RTL mode

Gantt and bar charts

Gantt & Network chart Gantt & Network chart - RTL Simple Gantt chart Big Gantt chart - 1000 rows Gantt chart tree by grouping Resources usage chart Run chart - bar chart Grouping bars - run groups Joined boxes and containers Line chart and XY charts

Live grid tutorials
Basic (rows and columns)

1. Basic grid 2. Rows 3. Columns 4. Default rows, columns 5. Rows manipulation 6. Rows identification

Cells (types, formats, edit)

1. Edits - inputs & multiline 2. Combos & checkboxes 3. Html, links, imgs, buttons 4. Space buttons & tabs 5. Permissions & validation 6. Cell CSS style & color 7. Conditional formatting 8. Custom controls & editing 9. Events & custom dialogs 10. Column & row spanning 11. Dynamic cell spanning

Tree (rows, columns, groups)

1. Row tree 2. Column tree 3. Grouping rows to tree

Sorting rows

1. Sorting rows

Filter and search

1. Filtering rows 2. Filtering in tree 3. Search & advanced filters


1. Dragging rows 2. Dragging between grids 3. Dragging external tag

Paging (rows, tree, columns)

1. Client root paging 2. Client child paging 3. Client column paging 4. All client paging 5. Adding pages dynamically 6. Server root paging 7. Server child paging 8. All server paging

Master and detail

1. Nested detail simple 2. Nested detail tables 3. Master detail simple 4. Master detail tables 5. Master detail more tables 6. Master detail in tree 7. Master detail trees 8. Nested detail nested deep 9. Nested detail server paging

Calculations (cell formulas)

1. Calculated columns 2. Calculated rows 3. Calculation order 4. Calculated rows in tree 5. Calculation order in tree 6. Calculated attributes 7. Editable calculated cells

Live Sheet tutorials
Sheet features

1. Row and column Index 2. Auto size (auto adding pages) 3. Row&column manipulation 4. Cell manipulation 5. Cell style 6. Editable formulas (ids) 7. Editable formulas (indexes) 8. Cell format 9. Outside edit 10. Auto tree

Live Gantt tutorials
Main bar (Gantt chart)

1. Main bar 2. Discrete main bar 3. Main bar plans 4. Summary tasks

Run bar (Bar chart)

1. Run array definition 2. Run JSON definition 3. Run summary definition 4. Run drag 5. Run groups & API 6. Run bar as task 7. Run box as task 8. Network diagram 9. Run join and drag 10. Run external drag 11. 2 fixed levels containers

Flags and points

1. Flags 2. Points

Display, zoom, paging

1. Header & background 2. Zoom 3. Paging 4. Synchronizing more Gantts

Dependencies & scheduling

1. Constraints 2. Dependencies 3. Schedule tasks 4. Critical path


1. Calendars exclude


1. Resources 2. Availability

3. Schedule tasks

Automatic and manual correcting of dependencies by moving related tasks

Source: 03-Schedule_tasks.xml   Main bar and Run bar as task

Source: 03-Schedule_boxes.xml   Run box as task   (move box between rows by right mouse button)
  • See documentation for Correcting dependencies and Algorithm for correcting dependencies.
  • The correct dependencies are shown blue, the incorrect dependencies in red. The colors can be changed, see tutorial 02-Dependencies
  • Attribute


    controls which dependencies will be marked as incorrect.
    For 1 will be marked as incorrect only dependencies that start (+lag) before they end.
    For 2 will be marked as incorrect all dependencies that don't start (+lag) and end on the same date.
    For individual dependency it can be changed by float value in the dependency definition (after the !).
  • The dependencies are corrected by moving the related tasks. The tasks are never resized in this action. The tasks are never moved to violate their constraints.
    When moving task that consists from more parts, all the parts are moved together, preserving space (in worktime) between parts.
    Only Gantt objects defined in GanttTask can have dependencies.
  • The dependencies can be corrected manually by clicking to the first button (Correct) on toolbar.
    Or by choosing item "Correct all dependencies" or "Correct related dependencies" in the Gantt popup menu.
    Or by calling the action CorrectAllDependencies or CorrectDependencies by API or assigned to some event.
  • The dependencies can be corrected automatically (or by user confirmation) after any change in the chart (task move, resize, delete, create, constraint change or dependency change), according to


    attribute value.
    The one changed task can be also automatically corrected or it can be fixed and all other tasks are moved to correct the dependencies, it is controlled by GanttCorrectDependenciesFixed attribute. It affects task or dependency change, but not constraints change.
  • There are

    three methods of correcting dependencies

    , chosen by


    By default (for 1) are all tasks moved as close to project start / end date as possible.
    For 0 are the tasks moved as little as possible to only correct the dependencies.
    For 2 are all descendant tasks moved as close as possible to their ancestors. See documentation for Algorithm for correcting dependencies.
  • A user can move the task manually and preserve this position when moving the task for correcting dependencies. The task is never moved before this manual date.
    It is controlled by GanttManualX and GanttManualChange for main bar and GanttRunManual and GanttRunManualChange for run bar.
  • It is possible to schedule the tasks from project start or project finish, it is set by


  • Circular dependencies

    checking is controlled by


    , it is possible to restrict, permit or ask the creating.
    The tasks containing circular dependencies are usually impossible to correct.
  • By attribute


    is possible to fix all already started tasks (with Complete>0) and move only not yet started tasks (Complete=0).
    In this case dependency between two already started tasks is always marked correct.
  • Disabled and locked task is never moved when scheduling.
    Disabled task has also disabled dependencies, they are not used when correcting dependencies.
  • If scheduling Run box, it is possible to move the box freely or preserve the box order or to not overlay the boxes by GanttRunCorrectBox.
  • In large charts when some dependencies still remain incorrect after correcting dependencies increase value of GanttMaxCorrectingLoops.
    Increasing it can slow down correcting especially if the dependencies cannot be corrected due constraints or circular dependencies.