Skip to content

Migrating from DHTMLX TreeGrid

react-tree-grid is a drop-in open-source replacement for DHTMLX TreeGrid. This page maps the most common DHTMLX API patterns to their react-tree-grid equivalents.

Installation

diff
- import { TreeGrid } from 'dhtmlx-treegrid'
+ import { TreeGrid } from '@itsmemyk/react-tree-grid/treegrid'
+ import { ThemeProvider } from '@itsmemyk/react-tree-grid'

Initialisation

DHTMLX uses imperative DOM-based init; react-tree-grid is declarative React:

diff
- const grid = new TreeGrid('container', {
-   columns: [...],
-   data: [...],
- })
+ <ThemeProvider>
+   <TreeGrid columns={columns} data={data} treeColumnId="name" />
+ </ThemeProvider>

Column config

DHTMLXreact-tree-grid
idid
header arrayheader array of GridHeaderCell
widthwidth
hiddenhidden: true
sortablesortable: true
resizableresizable: true
template callbacktemplate: (value, row, col) => ReactNode
type: "date"type: "date"
type: "checkbox"type: "checkbox"
editorTypeeditorType

Data format

DHTMLX uses flat arrays with parent references — react-tree-grid accepts the same:

ts
// DHTMLX format — works as-is in react-tree-grid
const data = [
  { id: 'ceo', name: 'Alice', role: 'CEO' },
  { id: 'cto', name: 'Bob', role: 'CTO', parent: 'ceo' },
]

You can also use nested items arrays:

ts
const data = [
  {
    id: 'ceo',
    name: 'Alice',
    role: 'CEO',
    $opened: true,
    items: [
      { id: 'cto', name: 'Bob', role: 'CTO' },
    ],
  },
]

Events

DHTMLX uses string event names with grid.events.on(); react-tree-grid uses prop callbacks:

DHTMLXreact-tree-grid prop
afterSelectonAfterSelect
beforeSelectonBeforeSelect
afterEditEndonAfterEditEnd
beforeEditEndonBeforeEditEnd
afterSortonAfterSort
beforeSortonBeforeSort
afterColumnDragonAfterColumnDrag
afterRowDragonAfterRowDrag

Imperative API

DHTMLX exposes methods directly on the grid instance. react-tree-grid uses the same method names via a ref:

tsx
import { useRef } from 'react'
import type { GridApi } from '@itsmemyk/react-tree-grid/grid'

const apiRef = useRef<GridApi>(null)

// DHTMLX: grid.hideColumn('salary')
// react-tree-grid:
apiRef.current?.hideColumn('salary')

<Grid ref={apiRef} columns={columns} data={data} />

Theming

DHTMLX themes are CSS files you import. react-tree-grid uses ThemeProvider:

diff
- import 'dhtmlx-treegrid/codebase/skins/dhtmlxgrid_skyblue.css'
+ import { ThemeProvider } from '@itsmemyk/react-tree-grid'
+
+ <ThemeProvider theme="light">...</ThemeProvider>

Released under the MIT License.