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

Sheets

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

Dragging

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

Calendars

1. Calendars exclude

Resources

1. Resources 2. Availability

2. Dragging rows between grids

Dragging rows inside and between grids

Source: 02-Tree.xml
Source: 02-Nodes.xml
Source: 02-Items.xml

  • See Row moving and dragging documentation and Default rows documentation.
  • Example description


    • Move row with children by dragging by left mouse button, copy row by dragging by right mouse button, copy row with children by dragging by ctrl+right mouse button. Select more rows (by panel button) and drag them together.
    • There are three row types (default rows), NODE, ITEM and SUBITEM. The NODE can contain only ITEM. The ITEM can contain ITEM and SUBITEM. The SUBITEM can contain only SUBITEM.
    • New child in NODE is ITEM. New child in ITEM is SUBITEM. New child in SUBITEM is SUBITEM.
    • The Tree and Nodes grids can contain all rows (NODE, ITEM, SUBITEM), root rows are NODE. The Items grid can contain ITEM and SUBITEM rows, root rows are ITEM. The Subitems grid does not accept new rows.
    • Rows dragged from Tree, Nodes and Items grids are moved (or copied if dragged by right or middle mouse button) and rows dragged from Subitems grid are always copied.
  • Basic dragging settings


    are described in the previous example, see 01-Dragging_and_copying_rows tutorial.
  • Dragging permissions


    By default it is permitted to drag rows between grids.
    Set <Cfg Dragging='0'/> to restrict dragging from the grid, set <Cfg Dropping='0'/> to restrict dropping rows to the grid.
    On row level set row attribute

    CanDrag

    to 0 to restrict dragging the row.
    Dragging permissions can be controlled dynamically by API event OnStartDrag, dropping permissions by API event OnCanDrop.
  • API


    On move row to another grid there is called OnRowMoveToGrid API event.
    Move row(s) to another grid by MoveRowsToGrid API method.
  • Save changes to server


    • Moved row to another grid is not marked by Moved attribute. It is marked as

      Deleted='1'

      in source grid and

      Added='1'

      in the destination grid.
      See XML structure sent to server documentation
    • If the destination grid contains Deleted='1' row with the same id as moved row (when moving row back to source grid), the row is not added, but the original deleted row is undeleted and its cells are copied from the moved row.
      The source row is still marked as Deleted='1' in this case, so there is deleted row in source grid, but not added row in the destination grid.
      Use OnRowCopyId API event to preserve the row id when moving to provide the behavior described above.
    • Because the move changes two grids it is good to save all grids together to have their state always synchronized.
      To do it create function that will read the grid changes by GetXmlData API method and merge them together and send them to server. After the save is done, call AcceptChanges API method for all grids.
  • Undo feature is not fully compatible with moving rows between grids. It undoes changes only in one grid, so there can be inconsistent state, when the moving action is undone only in one grid.