React TreeView Props

An object defining configuration properties for the TreeView UI component.

accessKey

Specifies the shortcut key that sets focus on the UI component.

Type:

String

| undefined
Default Value: undefined

The value of this property will be passed to the accesskey attribute of the HTML element that underlies the UI component.

activeStateEnabled

Specifies whether the UI component changes its visual state as a result of user interaction.

Type:

Boolean

Default Value: false

The UI component switches to the active state when users press down the primary mouse button. When this property is set to true, the CSS rules for the active state apply. You can change these rules to customize the component.

Use this property when you display the component on a platform whose guidelines include the active state change for UI components.

animationEnabled

Specifies whether or not to animate item collapsing and expanding.

Type:

Boolean

Default Value: true

collapseIcon

Specifies a custom collapse icon.

Type:

String

| null
Default Value: null

This property accepts one of the following:

The following code snippet shows how to specify custom collapse and expand icons:

jQuery

index.js
$(function() {
    $("#treeView").dxTreeView({
        // ...
        collapseIcon: "minus",  // icon from the DevExtreme icon library
        expandIcon: "https://path/to/the/expand_icon.svg", // icon in the SVG format
    });
});
Angular
app.component.html
app.component.ts
app.module.ts
<dx-tree-view ...
    collapseIcon="minus" // icon from the DevExtreme icon library 
    expandIcon="https://path/to/the/expand_icon.svg" // icon in the SVG format
> 
</dx-tree-view>
import { Component } from '@angular/core'; 

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 

export class AppComponent { 
    // ...
}
import { BrowserModule } from '@angular/platform-browser'; 
import { NgModule } from '@angular/core'; 
import { AppComponent } from './app.component'; 
import { DxTreeViewModule } from 'devextreme-angular'; 

@NgModule({ 
    declarations: [ 
        AppComponent 
    ], 
    imports: [ 
        BrowserModule, 
        DxTreeViewModule 
    ], 
    providers: [ ], 
    bootstrap: [AppComponent] 
}) 

export class AppModule { }  
Vue
App.vue (Options API)
App.vue (Composition API)
<template> 
    <DxTreeView ...
        collapseIcon="minus" // icon from the DevExtreme icon library 
        expandIcon="https://path/to/the/expand_icon.svg" // icon in the SVG format
    />            
</template> 

<script>  
import 'devextreme/dist/css/dx.light.css'; 
import DxTreeView from 'devextreme-vue/tree-view'; 

export default { 
    components: { 
        DxTreeView
    }, 
    // ...
} 
</script>
<template> 
    <DxTreeView ...
        collapseIcon="minus" // icon from the DevExtreme icon library 
        expandIcon="https://path/to/the/expand_icon.svg" // icon in the SVG format
    />            
</template> 

<script setup>  
import 'devextreme/dist/css/dx.light.css'; 
import DxTreeView from 'devextreme-vue/tree-view'; 

// ...
</script> 
React
App.js
import React from 'react';  
import 'devextreme/dist/css/dx.light.css'; 

import TreeView from 'devextreme-react/tree-view'; 

export default function App() { 
    return ( 
        <TreeView ...
            collapseIcon="minus" // icon from the DevExtreme icon library
            expandIcon="https://path/to/the/expand_icon.svg" // icon in the SVG format
        />        
    ); 
} 

See Also

createChildren

Allows you to load nodes on demand.

Type:

Function

Function parameters:
parentNode:

TreeView Node

The node that has been expanded; null for the root node.

Return Value:

Promise<any> (jQuery or native)

|

Array<Object>

A Promise that is resolved with the result from the server or an array of objects to be converted to child nodes.

createChildren is called at the beginning of the UI component's lifetime and each time a user expands a node whose child nodes have not been loaded yet. It allows you to load the entire tree in portions: load root nodes first (when the function's parentNode parameter is null) and the child nodes of each expanded node later.

This function has the following restrictions:

  • Neither the dataSource, nor the items property should be specified.

  • The dataStructure property should be set to "plain".

  • Since the search will be performed on loaded nodes only and thus produce incorrect results, it is not recommended that you enable this functionality.

The following code shows how to use this function with a remote service:

jQuery
JavaScript
$(function() {
    $("#treeViewContainer").dxTreeView({
        dataStructure: "plain",
        rootValue: 0, 
        createChildren: function (parentNode) {
            var d = $.Deferred();
            $.get("http://url/to/the/service", {
                    // Here, 0 is the "rootValue" property's value.
                    parentId: parentNode ? JSON.stringify(parentNode.key) : "0" 
                })
                .done(function (result) {
                    d.resolve(result);
                });
            return d.promise();
        }
    });
});
Angular
HTML
TypeScript
<dx-tree-view
    [rootValue]="0"
    dataStructure="plain"
    [createChildren]="createChildren">
</dx-tree-view>
import { ..., Inject } from "@angular/core";
import { HttpClient, HttpClientModule, HttpParams } from "@angular/common/http";
import { lastValueFrom } from 'rxjs';
import { DxTreeViewModule } from "devextreme-angular";
// ...
export class AppComponent {
    constructor(@Inject(HttpClient) httpClient: HttpClient) { }
    createChildren = (parentNode) => {
        let params: HttpParams = new HttpParams()
            .set("parentId", parentNode ? JSON.stringify(parentNode.key) : "0");
        const request$ = this.httpClient.get("http://url/to/the/service", {
            params: params
        });
        return lastValueFrom(request$);
    }
}
@NgModule({
    imports: [
        // ...
        DxTreeViewModule,
        HttpClientModule 
    ],
    // ...
})
Vue
App.vue
<template>
    <DxTreeView
        :create-children="createChildren"
        :root-value="''"
        data-structure="plain"
    />
</template>
<script>

import DxTreeView from 'devextreme-vue/tree-view';
import 'whatwg-fetch';

export default {
    components: {
        DxTreeView
    },
    methods: {
        createChildren: function(parent) {
        let parentId = parent ? parent.itemData.id : '';

        return fetch(`http://url/to/the/service?parentId=${parentId}`)
            .then(response => response.json())
            .catch(() => { throw 'Data Loading Error'; });
        }
    }
};
</script>
React
App.js
import React from 'react';
import TreeView from 'devextreme-react/tree-view';
import 'whatwg-fetch';

const App = () => {
    return (
        <TreeView
            dataStructure="plain"
            rootValue="''"
            createChildren={createChildren}
        />
    );
}

const createChildren = (parent) => {
    let parentId = parent ? parent.itemData.id : '';

    return fetch(`http://url/to/the/service?parentId=${parentId}`)
        .then(response => response.json())
        .catch(() => { throw 'Data Loading Error'; });
}

export default App;

View Demo

See Also

dataSource

Binds the UI component to data.

Default Value: null

The TreeView works with object collections that can have a plain or hierarchical structure. Depending on the structure, the objects should provide different data fields. Specify the dataStructure property to notify the TreeView of the used structure and refer to the property's description for information on the required fields.

Depending on your data source, bind TreeView to data as follows.

  • Data Array
    Assign the array to the dataSource option.

  • Read-Only Data in JSON Format
    Set the dataSource property to the URL of a JSON file or service that returns JSON data.

  • OData
    Implement an ODataStore.

  • Web API, PHP, MongoDB
    Use one of the following extensions to enable the server to process data according to the protocol DevExtreme UI components use:

    Then, use the createStore method to configure access to the server on the client as shown below. This method is part of DevExtreme.AspNet.Data.

    jQuery
    JavaScript
    $(function() {
        let serviceUrl = "https://url/to/my/service";
        $("#treeViewContainer").dxTreeView({
            // ...
            dataSource: DevExpress.data.AspNet.createStore({
                key: "ID",
                loadUrl: serviceUrl + "/GetAction",
                insertUrl: serviceUrl + "/InsertAction",
                updateUrl: serviceUrl + "/UpdateAction",
                deleteUrl: serviceUrl + "/DeleteAction"
            })
        })
    });
    Angular
    app.component.ts
    app.component.html
    app.module.ts
    import { Component } from '@angular/core';
    import CustomStore from 'devextreme/data/custom_store';
    import { createStore } from 'devextreme-aspnet-data-nojquery';
    
    @Component({
        selector: 'app-root',
        templateUrl: './app.component.html',
        styleUrls: ['./app.component.css']
    })
    export class AppComponent {
        store: CustomStore;
        constructor() {
            let serviceUrl = "https://url/to/my/service";
            this.store = createStore({
                key: "ID",
                loadUrl: serviceUrl + "/GetAction",
                insertUrl: serviceUrl + "/InsertAction",
                updateUrl: serviceUrl + "/UpdateAction",
                deleteUrl: serviceUrl + "/DeleteAction"
            })
        }
    }
    <dx-tree-view ...
        [dataSource]="store">
    </dx-tree-view>
    import { BrowserModule } from '@angular/platform-browser';
    import { NgModule } from '@angular/core';
    import { AppComponent } from './app.component';
    
    import { DxTreeViewModule } from 'devextreme-angular';
    
    @NgModule({
        declarations: [
            AppComponent
        ],
        imports: [
            BrowserModule,
            DxTreeViewModule
        ],
        providers: [],
        bootstrap: [AppComponent]
    })
    export class AppModule { }
    Vue
    App.vue
    <template> 
        <DxTreeView ...
            :data-source="store" />
    </template>
    
    <script>
    import 'devextreme/dist/css/dx.light.css';
    
    import CustomStore from 'devextreme/data/custom_store';
    import { createStore } from 'devextreme-aspnet-data-nojquery';
    import { DxTreeView } from 'devextreme-vue/tree-view';
    
    export default {
        components: {
            DxTreeView
        },
        data() {
            const serviceUrl = "https://url/to/my/service";
            const store = createStore({
                key: "ID",
                loadUrl: serviceUrl + "/GetAction",
                insertUrl: serviceUrl + "/InsertAction",
                updateUrl: serviceUrl + "/UpdateAction",
                deleteUrl: serviceUrl + "/DeleteAction"
            });
            return {
                store
            }
        }
    }
    </script>
    React
    App.js
    import React from 'react';
    import 'devextreme/dist/css/dx.light.css';
    
    import CustomStore from 'devextreme/data/custom_store';
    import { createStore } from 'devextreme-aspnet-data-nojquery';
    import TreeView from 'devextreme-react/tree-view';
    
    const serviceUrl = "https://url/to/my/service";
    const store = createStore({
        key: "ID",
        loadUrl: serviceUrl + "/GetAction",
        insertUrl: serviceUrl + "/InsertAction",
        updateUrl: serviceUrl + "/UpdateAction",
        deleteUrl: serviceUrl + "/DeleteAction"
    });
    
    class App extends React.Component {
        render() {
            return (
                <TreeView ...
                    dataSource={store} />
            );
        }
    }
    export default App;
  • Any other data source
    Implement a CustomStore.

Regardless of the data source on the input, the TreeView always wraps it in the DataSource object. This object allows you to sort, filter, group, and perform other data shaping operations. To get its instance, call the getDataSource() method.

NOTE

Review the following notes about data binding:

  • Do not specify the items property if you specified the dataSource, and vice versa.

  • Data field names cannot be equal to this and should not contain the following characters: ., :, [, and ].

jQuery
  • The stores are immutable. You cannot change their configurations at runtime. Instead, create a new store or DataSource and assign it to the dataSource property as shown in the following help topic: Get and Set Properties.
Angular
  • The stores are immutable. You cannot change their configurations at runtime. Instead, create a new store or DataSource and assign it to the dataSource property as shown in the following help topic: Two-Way Property Binding.
Vue
  • The stores are immutable. You cannot change their configurations at runtime. Instead, create a new store or DataSource and assign it to the dataSource property as shown in the following help topic: Two-Way Property Binding.
React
  • The stores are immutable. You cannot change their configurations at runtime. Instead, create a new store or DataSource and assign it to the dataSource property as shown in the following help topic: Controlled Mode.
See Also

dataStructure

Notifies the UI component of the data structure in use.

Default Value: 'tree'

The UI component expects that data has a hierarchical structure (dataStructure: 'tree'). Each data item contains text, a unique id, and an items array if the data item includes sub-items:

JavaScript
var hierarchicalData = [{
    id: '1',
    text: 'Fruits',
    items: [
        { id: '1_1', text: 'Apples' },
        { id: '1_2', text: 'Oranges' }
    ]
}, {
    id: '2',
    text: 'Vegetables',
    items: [
        { id: '2_1', text: 'Cucumbers' },
        { id: '2_2', text: 'Tomatoes' }
    ]
}];
NOTE
A data item's id should not match rootValue in the 'tree' dataStructure.

View Demo

If data has a plain structure, set the dataStructure property to "plain". In this case, each data item should have text, a unique id, and a parentId. For root items, parentId should be equal to 0 or undefined:

JavaScript
var plainData = [
    { id: '1', text: 'Fruits' },     // A root item
    { id: '1_1', text: 'Apples', parentId: '1' },
    { id: '1_2', text: 'Oranges', parentId: '1' },
    { id: '2', text: 'Vegetables' }, // Also a root item
    { id: '2_1', text: 'Cucumbers', parentId: '2' },
    { id: '2_2', text: 'Tomatoes', parentId: '2' }
];

id, text, items, and parentId are conventional field names. To use other names, change the keyExpr, displayExpr, itemsExpr, and parentIdExpr properties, respectively. You can also specify the rootValue property to change the parentId value that root items should have.

View Demo

See Also

disabled

Specifies whether the UI component responds to user interaction.

Type:

Boolean

Default Value: false

disabledExpr

Specifies the name of the data source item field whose value defines whether or not the corresponding UI component item is disabled.

Type:

String

|

Function

Default Value: 'disabled'

displayExpr

Specifies the data field whose values should be displayed.

Type:

String

|

Function

Function parameters:
item:

Object

The current item's data object.

Return Value:

String

The displayed value.

Default Value: 'text'

Set this property to the name of a data field that provides displayed values...

displayExpr: "name"

... or to a function that returns the displayed value:

displayExpr: function(item) {
    // "item" can be null
    return item && 'ID: ' + item.id + ', Name: ' + item.name;
}

View Demo

See Also

elementAttr

Specifies the global attributes to be attached to the UI component's container element.

Selector: ElementAttr
Type:

Object

Default Value: {}

jQuery
$(function(){
    $("#treeViewContainer").dxTreeView({
        // ...
        elementAttr: {
            id: "elementId",
            class: "class-name"
        }
    });
});
Angular
HTML
TypeScript
<dx-tree-view ...
    [elementAttr]="{ id: 'elementId', class: 'class-name' }">
</dx-tree-view>
import { DxTreeViewModule } from "devextreme-angular";
// ...
export class AppComponent {
    // ...
}
@NgModule({
    imports: [
        // ...
        DxTreeViewModule
    ],
    // ...
})
Vue
App.vue
<template>
    <DxTreeView ...
        :element-attr="treeViewAttributes">
    </DxTreeView>
</template>

<script>
import DxTreeView from 'devextreme-vue/tree-view';

export default {
    components: {
        DxTreeView
    },
    data() {
        return {
            treeViewAttributes: {
                id: 'elementId',
                class: 'class-name'
            }
        }
    }
}
</script>
React
App.js
import React from 'react';

import TreeView from 'devextreme-react/tree-view';

class App extends React.Component {
    treeViewAttributes = {
        id: 'elementId',
        class: 'class-name'
    }

    render() {
        return (
            <TreeView ...
                elementAttr={this.treeViewAttributes}>
            </TreeView>
        );
    }
}
export default App;

expandAllEnabled

Specifies whether or not a user can expand all tree view items by the "*" hot key.

Type:

Boolean

Default Value: false

expandedExpr

Specifies which data source field specifies whether an item is expanded.

Type:

String

|

Function

Default Value: 'expanded'

expandEvent

Specifies the event on which to expand/collapse a node.

Default Value: 'dblclick'

expandIcon

Specifies a custom expand icon.

Type:

String

| null
Default Value: null

This property accepts one of the following:

The following code snippet shows how to specify custom expand and collapse icons:

jQuery

index.js
$(function() {
    $("#treeView").dxTreeView({
        // ...
        collapseIcon: "minus",  // icon from the DevExtreme icon library
        expandIcon: "https://path/to/the/expand_icon.svg", // icon in the SVG format
    });
});
Angular
app.component.html
app.component.ts
app.module.ts
<dx-tree-view ...
    collapseIcon="minus" // icon from the DevExtreme icon library 
    expandIcon="https://path/to/the/expand_icon.svg" // icon in the SVG format
> 
</dx-tree-view>
import { Component } from '@angular/core'; 

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 

export class AppComponent { 
    // ...
}
import { BrowserModule } from '@angular/platform-browser'; 
import { NgModule } from '@angular/core'; 
import { AppComponent } from './app.component'; 
import { DxTreeViewModule } from 'devextreme-angular'; 

@NgModule({ 
    declarations: [ 
        AppComponent 
    ], 
    imports: [ 
        BrowserModule, 
        DxTreeViewModule 
    ], 
    providers: [ ], 
    bootstrap: [AppComponent] 
}) 

export class AppModule { }  
Vue
App.vue (Options API)
App.vue (Composition API)
<template> 
    <DxTreeView ...
        collapseIcon="minus" // icon from the DevExtreme icon library 
        expandIcon="https://path/to/the/expand_icon.svg" // icon in the SVG format
    />            
</template> 

<script>  
import 'devextreme/dist/css/dx.light.css'; 
import DxTreeView from 'devextreme-vue/tree-view'; 

export default { 
    components: { 
        DxTreeView
    }, 
    // ...
} 
</script>
<template> 
    <DxTreeView ...
        collapseIcon="minus" // icon from the DevExtreme icon library 
        expandIcon="https://path/to/the/expand_icon.svg" // icon in the SVG format
    />            
</template> 

<script setup>  
import 'devextreme/dist/css/dx.light.css'; 
import DxTreeView from 'devextreme-vue/tree-view'; 

// ...
</script> 
React
App.js
import React from 'react';  
import 'devextreme/dist/css/dx.light.css'; 

import TreeView from 'devextreme-react/tree-view'; 

export default function App() { 
    return ( 
        <TreeView ...
            collapseIcon="minus" // icon from the DevExtreme icon library
            expandIcon="https://path/to/the/expand_icon.svg" // icon in the SVG format
        />        
    ); 
} 

See Also

expandNodesRecursive

Specifies whether or not all parent nodes of an initially expanded node are displayed expanded.

Type:

Boolean

Default Value: true

focusStateEnabled

Specifies whether the UI component can be focused using keyboard navigation.

Type:

Boolean

Default Value: true (desktop)

hasItemsExpr

Specifies the name of the data source item field whose value defines whether or not the corresponding node includes child nodes.

Type:

String

|

Function

Default Value: 'hasItems'

height

Specifies the UI component's height.

Type:

Number

|

String

|

Function

| undefined
Return Value:

Number

|

String

The UI component's height.

Default Value: undefined

This property accepts a value of one of the following types:

  • Number
    The height in pixels.

  • String
    A CSS-accepted measurement of height. For example, "55px", "20vh", "80%", "inherit".

  • Function (deprecated since v21.2)
    Refer to the W0017 warning description for information on how you can migrate to viewport units.

hint

Specifies text for a hint that appears when a user pauses on the UI component.

Type:

String

| undefined
Default Value: undefined

hoverStateEnabled

Specifies whether the UI component changes its state when a user pauses on it.

Type:

Boolean

Default Value: true

itemComponent

An alias for the itemTemplate property specified in React. Accepts a custom component. Refer to Using a Custom Component for more information.

itemHoldTimeout

The time period in milliseconds before the onItemHold event is raised.

Type:

Number

Default Value: 750

itemRender

An alias for the itemTemplate property specified in React. Accepts a rendering function. Refer to Using a Rendering Function for more information.

items[]

An array of items displayed by the UI component.

Selector: Item
Raised Events: onOptionChanged

The TreeView works with object collections that can have a plain or hierarchical structure. Depending on the structure, the objects should provide different data fields. Specify the dataStructure property to notify the TreeView of the used structure and refer to the property's description for information on the required fields.

If you need to update the UI component items, reassign the entire items array as shown in the following example:

JavaScript
treeViewInstance.option('items', newItems);

As an alternative to items, you can use the dataSource property. It accepts the DataSource object, whose underlying stores provide an API that allows you to update individual items without reassigning the entire item collection.

NOTE
Do not use the items property if you use dataSource, and vice versa.

itemsExpr

Specifies which data field contains nested items. Applies only if the dataStructure property is "tree".

Type:

String

|

Function

Default Value: 'items'

itemTemplate

Specifies a custom template for items.

Type:

template

Template Data:

Object

The item object to be rendered.

Default Name: 'item'

keyExpr

Specifies which data field provides keys for TreeView items.

Type:

String

|

Function

Default Value: 'id'

NOTE
The key value should be unique within the data array.
See Also

noDataText

Specifies the text or HTML markup displayed by the UI component if the item collection is empty.

Type:

String

Default Value: 'No data to display'

The TreeView component evaluates the noDataText property's value. This evaluation, however, makes the TreeView potentially vulnerable to XSS attacks. To guard against these attacks, encode the HTML markup before you assign it to the noDataText property. Refer to the following help topic for more information: Potentially Vulnerable API - noDataText.

onContentReady

A function that is executed when the UI component is rendered and each time the component is repainted.

Type:

Function

Function parameters:

Information about the event.

Object structure:
Name Type Description
element

HTMLElement | jQuery

The UI component's container. It is an HTML Element or a jQuery Element when you use jQuery.

component

TreeView

The UI component's instance.

Default Value: null

onDisposing

A function that is executed before the UI component is disposed of.

Type:

Function

Function parameters:

Information about the event.

Object structure:
Name Type Description
element

HTMLElement | jQuery

The UI component's container. It is an HTML Element or a jQuery Element when you use jQuery.

component

TreeView

The UI component's instance.

Default Value: null

onInitialized

A function used in JavaScript frameworks to save the UI component instance.

Type:

Function

Function parameters:

Information about the event.

Object structure:
Name Type Description
element

HTMLElement | jQuery

The UI component's container. It is an HTML Element or a jQuery Element when you use jQuery.

component

TreeView

The UI component's instance.

Default Value: null

Angular
app.component.html
app.component.ts
<dx-tree-view ...
    (onInitialized)="saveInstance($event)">
</dx-tree-view>
import { Component } from "@angular/core";
import TreeView from "devextreme/ui/data_grid";
// ...
export class AppComponent {
    treeViewInstance: TreeView;
    saveInstance (e) {
        this.treeViewInstance = e.component;
    }
}
Vue
App.vue (Options API)
App.vue (Composition API)
<template>
    <div>
        <DxTreeView ...
            @initialized="saveInstance">
        </DxTreeView>
    </div>
</template>

<script>
import DxTreeView from 'devextreme-vue/tree-view';

export default {
    components: {
        DxTreeView
    },
    data: function() {
        return {
            treeViewInstance: null
        };
    },
    methods: {
        saveInstance: function(e) {
            this.treeViewInstance = e.component;
        }
    }
};
</script>
<template>
    <div>
        <DxTreeView ...
            @initialized="saveInstance">
        </DxTreeView>
    </div>
</template>

<script setup>
import DxTreeView from 'devextreme-vue/tree-view';

let treeViewInstance = null;

const saveInstance = (e) => {
    treeViewInstance = e.component;
}
</script>
React
App.js
import TreeView from 'devextreme-react/tree-view';

class App extends React.Component {
    constructor(props) {
        super(props);

        this.saveInstance = this.saveInstance.bind(this);
    }

    saveInstance(e) {
        this.treeViewInstance = e.component;
    }

    render() {
        return (
            <div>
                <TreeView onInitialized={this.saveInstance} />
            </div>
        );
    }
}
See Also
jQuery
  • Get a UI component Instance in jQuery
Angular
  • Get a UI component Instance in Angular
Vue
  • Get a UI component Instance in Vue
React
  • Get a UI component Instance in React

onItemClick

A function that is executed when a collection item is clicked or tapped.

Type:

Function

Function parameters:

Information about the event.

Object structure:
Name Type Description
node

TreeView Node

The clicked item's node.

itemIndex

Number

The clicked item's index.

itemElement

HTMLElement | jQuery

The clicked item's container. It is an HTML Element or a jQuery Element when you use jQuery.

itemData

Object

The clicked item's data object.

event

Event (jQuery or EventObject)

The event that caused the function to execute. It is an EventObject or a jQuery.Event when you use jQuery.

element

HTMLElement | jQuery

The UI component's container. It is an HTML Element or a jQuery Element when you use jQuery.

component

TreeView

The UI component's instance.

Default Value: null

onItemCollapsed

A function that is executed when a tree view item is collapsed.

Type:

Function

Function parameters:

Information about the event.

Object structure:
Name Type Description
component

TreeView

The UI component's instance.

element

HTMLElement | jQuery

The UI component's container. It is an HTML Element or a jQuery Element when you use jQuery.

event

Event (jQuery or EventObject)

The event that caused the function to execute. It is an EventObject or a jQuery.Event when you use jQuery.

itemData

Object

The collapsed item's data.

itemElement

HTMLElement | jQuery

The item's container. It is an HTML Element or a jQuery Element when you use jQuery.

itemIndex

Number

The item's index.

node

TreeView Node

The item's node.

Default Value: null

onItemContextMenu

A function that is executed when a collection item is right-clicked or pressed.

Type:

Function

Function parameters:

Information about the event.

Object structure:
Name Type Description
node

TreeView Node

The target item's node.

itemIndex

Number

The target item's index.

itemElement

HTMLElement | jQuery

The target item's container. It is an HTML Element or a jQuery Element when you use jQuery.

itemData

Object

The target item's data object.

event

Event (jQuery or EventObject)

The event that caused the function to execute. It is an EventObject or a jQuery.Event when you use jQuery.

element

HTMLElement | jQuery

The UI component's container. It is an HTML Element or a jQuery Element when you use jQuery.

component

TreeView

The UI component's instance.

Default Value: null

onItemExpanded

A function that is executed when a tree view item is expanded.

Type:

Function

Function parameters:

Information about the event.

Object structure:
Name Type Description
component

TreeView

The UI component's instance.

element

HTMLElement | jQuery

The UI component's container. It is an HTML Element or a jQuery Element when you use jQuery.

event

Event (jQuery or EventObject)

The event that caused the function to execute. It is an EventObject or a jQuery.Event when you use jQuery.

itemData

Object

The expanded item's data.

itemElement

HTMLElement | jQuery

The item's container. It is an HTML Element or a jQuery Element when you use jQuery.

itemIndex

Number

The item's index.

node

TreeView Node

The item's node.

Default Value: null

onItemHold

A function that is executed when a collection item has been held for a specified period.

Type:

Function

Function parameters:

Information about the event.

Object structure:
Name Type Description
node

TreeView Node

The node of the item being held.

itemIndex

Number

The item's index.

itemElement

HTMLElement | jQuery

The item's container. It is an HTML Element or a jQuery Element when you use jQuery.

itemData

Object

The data object of the item being held.

event

Event (jQuery or EventObject)

The event that caused the function to execute. It is an EventObject or a jQuery.Event when you use jQuery.

element

HTMLElement | jQuery

The UI component's container. It is an HTML Element or a jQuery Element when you use jQuery.

component

TreeView

The UI component's instance.

Default Value: null

onItemRendered

A function that is executed after a collection item is rendered.

Type:

Function

Function parameters:

Information about the event.

Object structure:
Name Type Description
node

TreeView Node

The rendered item's node.

itemIndex

Number

The rendered item's index.

itemElement

HTMLElement | jQuery

The rendered item's container. It is an HTML Element or a jQuery Element when you use jQuery.

itemData

Object

The rendered item's data object.

element

HTMLElement | jQuery

The UI component's container. It is an HTML Element or a jQuery Element when you use jQuery.

component

TreeView

The UI component's instance.

Default Value: null

onItemSelectionChanged

A function that is executed when a single TreeView item is selected or selection is canceled.

Type:

Function

Function parameters:

Information about the event.

Object structure:
Name Type Description
component

TreeView

The UI component's instance.

element

HTMLElement | jQuery

The UI component's container. It is an HTML Element or a jQuery Element when you use jQuery.

itemElement

HTMLElement | jQuery

The item's container. It is an HTML Element or a jQuery Element when you use jQuery.

node

TreeView Node

The item's node.

itemData

Object

The selected item's data.

itemIndex

Number

The item's index.

Default Value: null

This function is executed when:

Alternatively, you can use the onSelectionChanged function, which is executed in all the cases above, and when all items are selected simultaneously.

onOptionChanged

A function that is executed after a UI component property is changed.

Type:

Function

Function parameters:

Information about the event.

Object structure:
Name Type Description
value any

The modified property's new value.

previousValue any

The UI component's previous value.

name

String

The modified property if it belongs to the first level. Otherwise, the first-level property it is nested into.

fullName

String

The path to the modified property that includes all parent properties.

element

HTMLElement | jQuery

The UI component's container. It is an HTML Element or a jQuery Element when you use jQuery.

component

TreeView

The UI component's instance.

Default Value: null

The following example shows how to subscribe to component property changes:

jQuery
index.js
$(function() {
    $("#treeViewContainer").dxTreeView({
        // ...
        onOptionChanged: function(e) {
            if(e.name === "changedProperty") {
                // handle the property change here
            }
        }
    });
});
Angular
app.component.html
app.component.ts
app.module.ts
<dx-tree-view ...
    (onOptionChanged)="handlePropertyChange($event)"> 
</dx-tree-view>
import { Component } from '@angular/core'; 

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 

export class AppComponent { 
    // ...
    handlePropertyChange(e) {
        if(e.name === "changedProperty") { 
            // handle the property change here
        }
    }
}
import { BrowserModule } from '@angular/platform-browser'; 
import { NgModule } from '@angular/core'; 
import { AppComponent } from './app.component'; 
import { DxTreeViewModule } from 'devextreme-angular'; 

@NgModule({ 
    declarations: [ 
        AppComponent 
    ], 
    imports: [ 
        BrowserModule, 
        DxTreeViewModule 
    ], 
    providers: [ ], 
    bootstrap: [AppComponent] 
}) 

export class AppModule { }  
Vue
App.vue
<template> 
    <DxTreeView ...
        @option-changed="handlePropertyChange"
    />            
</template> 

<script>  
import 'devextreme/dist/css/dx.light.css'; 
import DxTreeView from 'devextreme-vue/tree-view'; 

export default { 
    components: { 
        DxTreeView
    }, 
    // ...
    methods: { 
        handlePropertyChange: function(e) {
            if(e.name === "changedProperty") {
                // handle the property change here
            }
        }
    } 
} 
</script> 
React
App.js
import React from 'react';  
import 'devextreme/dist/css/dx.light.css'; 

import TreeView from 'devextreme-react/tree-view'; 

const handlePropertyChange = (e) => {
    if(e.name === "changedProperty") {
        // handle the property change here
    }
}

export default function App() { 
    return ( 
        <TreeView ...
            onOptionChanged={handlePropertyChange}
        />        
    ); 
} 

onSelectAllValueChanged

A function that is executed when the "Select All" check box value is changed. Applies only if showCheckBoxesMode is "selectAll" and selectionMode is "multiple".

Type:

Function

Function parameters:

Information about the event.

Object structure:
Name Type Description
component

TreeView

The UI component's instance.

element

HTMLElement | jQuery

The UI component's container. It is an HTML Element or a jQuery Element when you use jQuery.

value

Boolean

| undefined

The "Select All" check box's new state.

Default Value: null

onSelectionChanged

A function that is executed when a TreeView item is selected or selection is canceled.

Type:

Function

Function parameters:

Information about the event.

Object structure:
Name Type Description
component

TreeView

The UI component's instance.

element

HTMLElement | jQuery

The UI component's container. It is an HTML Element or a jQuery Element when you use jQuery.

Default Value: null

This function is executed when:

View Demo

parentIdExpr

Specifies the name of the data source item field for holding the parent key of the corresponding node.

Type:

String

|

Function

Default Value: 'parentId'

This property is used if the dataStructure property is set to "plain".

View Demo

rootValue

Specifies the parent ID value of the root item.

Type: any
Default Value: 0

NOTE
A data item's id should not match rootValue in the 'tree' data structure.

rtlEnabled

Switches the UI component to a right-to-left representation.

Type:

Boolean

Default Value: false

When this property is set to true, the UI component text flows from right to left, and the layout of elements is reversed. To switch the entire application/site to the right-to-left representation, assign true to the rtlEnabled field of the object passed to the DevExpress.config(config) method.

JavaScript
DevExpress.config({
    rtlEnabled: true
});

DataGrid Demo Navigation UI Demo Editors Demo

scrollDirection

A string value specifying available scrolling directions.

Default Value: 'vertical'

searchEditorOptions

Configures the search panel.

Default Value: {}

See the TextBox Configuration for properties you can specify in this object.

Angular
NOTE
The nested component that configures the searchEditorOptions property does not support event bindings and two-way property bindings.
Vue
NOTE
The nested component that configures the searchEditorOptions property does not support event bindings and two-way property bindings.

searchEnabled

Specifies whether the search panel is visible.

Type:

Boolean

Default Value: false

IMPORTANT
The UI component only searches loaded nodes, which can yield incorrect results if the UI component loads nodes on demand (for example, in virtual mode or when the createChildren function is used). Permitting the search functionality in these cases is not recommended.

View Demo

See Also

searchExpr

Specifies a data object's field name or an expression whose value is compared to the search string.

Type:

getter

|

Array<getter>

Default Value: null

If you need to search several fields, assign an array of field names to this property.

searchExpr: ["firstName", "lastName"]

searchMode

Specifies a comparison operation used to search UI component items.

Type:

SearchMode

Default Value: 'contains'

searchTimeout

Specifies a delay in milliseconds between when a user finishes typing, and the search is executed.

Type:

Number

| undefined
Default Value: undefined

searchValue

Specifies the current search string.

Type:

String

Default Value: ''

See Also

selectAllText

Specifies the text displayed at the "Select All" check box.

Type:

String

Default Value: 'Select All'

selectByClick

Specifies whether an item is selected if a user clicks it.

Type:

Boolean

Default Value: false

Enable this property to select items with the Enter key when selectionMode is set to 'none'.

View Demo

See Also

selectedExpr

Specifies the name of the data source item field whose value defines whether or not the corresponding UI component items is selected.

Type:

String

|

Function

Default Value: 'selected'

selectionMode

Specifies item selection mode. Applies only if selection is enabled.

Default Value: 'multiple'
Accepted Values: 'multiple' | 'single' | 'all' | 'none'

To enable selection, set selectByClick to true or showCheckBoxesMode to "normal" or "selectAll".

View Demo

selectNodesRecursive

Specifies whether all child nodes should be selected when their parent node is selected. Applies only if the selectionMode is "multiple".

Type:

Boolean

Default Value: true

View Demo

NOTE
If searching is applied, the TreeView recursively selects only those child nodes that satisfy the search condition.

showCheckBoxesMode

Specifies the checkbox display mode.

Default Value: 'none'

The property accepts the following values:

  • "none"
    The UI component does not display checkboxes.

  • "normal"
    The UI component displays one checkbox per item.

  • "selectAll"
    The UI component displays one checkbox per item and one "Select All" checkbox at the top of the UI component. The selectionMode should be "multiple".

View Demo

See Also

tabIndex

Specifies the number of the element when the Tab key is used for navigating.

Type:

Number

Default Value: 0

The value of this property will be passed to the tabindex attribute of the HTML element that underlies the UI component.

useNativeScrolling

Specifies whether or not the UI component uses native scrolling.

Type:

Boolean

Default Value: true, false (desktop except Mac)

virtualModeEnabled

Enables the virtual mode in which nodes are loaded on demand. Use it to enhance the performance on large datasets.

Type:

Boolean

Default Value: false

If this property is true, the UI component initially loads only the root nodes. Child nodes are loaded when their parent is being expanded.

The virtual mode has the following restrictions:

  • The dataSource property should be set to a DataSource instance able to filter items by parent ID.

  • The dataStructure property should be set to "plain".

  • Since the search will be performed on loaded nodes only and thus produce incorrect results, it is not recommended that you enable this functionality.

View Demo

See Also

visible

Specifies whether the UI component is visible.

Type:

Boolean

Default Value: true

width

Specifies the UI component's width.

Type:

Number

|

String

|

Function

| undefined
Return Value:

Number

|

String

The UI component's width.

Default Value: undefined

This property accepts a value of one of the following types:

  • Number
    The width in pixels.

  • String
    A CSS-accepted measurement of width. For example, "55px", "20vw", "80%", "auto", "inherit".

  • Function (deprecated since v21.2)
    Refer to the W0017 warning description for information on how you can migrate to viewport units.