Vue TreeList - columns.buttons
Allows you to customize buttons in the edit column or create a custom command column. Applies only if the column's type is "buttons".
component
An alias for the template property specified in React. Accepts a custom component. Refer to Using a Custom Component for more information.
hint
Specifies the text for the hint that appears when the button is hovered over or long-pressed.
icon
Specifies the button's icon.
This option accepts one of the following:
- The icon's URL
- The icon's name if the icon is from the DevExtreme icon library
- The icon's CSS class if the icon is from an external icon library (see External Icon Libraries)
- The icon in the Base64 format
- The icon in the SVG format. Ensure that the source is reliable.
See Also
- buttons[].text
name
The name used to identify a built-in button.
To configure a built-in button, assign its name to this option. The other options in the object configure the button. For example, the following code adds a custom CSS class to the Save button:
jQuery
$(function () {
    $("#treeListContainer").dxTreeList({
        // ...
        columns: [{
            type: "buttons",
            buttons: [{
                name: "save",
                cssClass: "my-class"
            }]
        }]
    });
});Angular
<dx-tree-list ... >
    <dxi-column type="buttons">
        <dxi-button
            name="save"
            cssClass="my-class">
        </dxi-button>
    </dxi-column>
</dx-tree-list>
import { DxTreeListModule } from "devextreme-angular";
// ...
export class AppComponent {
    // ...
}
@NgModule({
    imports: [
        // ...
        DxTreeListModule
    ],
    // ...
})onClick
A function that is executed when the button is clicked or tapped. Not executed if a template is used.
Information about the event that caused the function's execution.
| Name | Type | Description | 
|---|---|---|
| column | The properties of the button's column. | |
| component | The widget's instance. | |
| element | The widget'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 a dxEvent or a jQuery.Event when you use jQuery. | 
| model | The model data. Available only if you use Knockout. | |
| row | The properties of the button's row. | 
render
An alias for the template property specified in React. Accepts a rendering function. Refer to Using a Rendering Function for more information.
template
Specifies a custom button template.
| Name | Type | Description | 
|---|---|---|
| column | The column's properties. | |
| columnIndex | The index of the cell's column.  | |
| component | The widget's instance. | |
| data | The data of the cell's row. | |
| key | any | The row's key. | 
| row | The row's properties. | |
| rowIndex | The index of the cell's row. Begins with 0 on each page. Group rows are included.  | |
| rowType | The row's type. | 
When you use a custom button template, the onClick function is ignored. Instead, handle the click event of the element placed inside the template:
jQuery
$(function() {
    $("#treeListContainer").dxTreeList({
        columns: [
            // ...    
            {
                type: "buttons",
                buttons: [{
                    template: function() {
                        var link = $("<a>").text("My command")
                                        .attr("href", "#");
                        link.on("click", function() {
                            console.log("My command was clicked");
                        });
                        return link;
                    }
                }]
            }
        ]
    });
});Angular
<dx-tree-list ... >
    <!-- ... -->
    <dxi-column type="buttons">
        <dxi-button template="myCommand">
            <div *dxTemplate="let data of 'myCommand'">
                <a href="#" (click)="logMyCommandClick()">My command</a>
            </div>
        </dxi-button>
    </dxi-column>
</dx-tree-list>
import { Component } from '@angular/core';
@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.css']
})
export class AppComponent {
    logMyCommandClick() {
        console.log('My command was clicked');
    }
}
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { DxTreeListModule } from 'devextreme-angular';
@NgModule({
    declarations: [
        AppComponent
    ],
    imports: [
        BrowserModule,
        DxTreeListModule
    ],
    providers: [ ],
    bootstrap: [AppComponent]
})
export class AppModule { }Vue
<template>
    <DxTreeList ... >
        <!-- ... -->
        <DxColumn type="buttons">
            <DxButton #default>
                <a href="#" @click="logMyCommandClick">My command</a>
            </DxButton>
        </DxColumn>
    </DxTreeList>
</template>
<script>
import 'devextreme/dist/css/dx.common.css';
import 'devextreme/dist/css/dx.light.css';
import DxTreeList, {
    DxColumn,
    DxButton
} from 'devextreme-vue/tree-list';
export default {
    components: {
        DxTreeList,
        DxColumn,
        DxButton
    },
    methods: {
        logMyCommandClick() {
            console.log('My command was clicked');
        }
    }
}
</script>React
import React from 'react';
import 'devextreme/dist/css/dx.common.css';
import 'devextreme/dist/css/dx.light.css';
import TreeList, {
    Column,
    Button
} from 'devextreme-react/tree-list';
class App extends React.Component {
    constructor(props) {
        super(props);
        this.renderMyCommand = this.renderMyCommand.bind(this);
    }
    logMyCommandClick() {
        console.log('My command was clicked');
    }
    renderMyCommand() {
        return <a href="#" onClick={this.logMyCommandClick}>My command</a>
    }
    render() {
        return (
            <TreeList ... >
                {/* ... */}
                <Column type="buttons">
                    <Button
                        render={this.renderMyCommand}
                    />
                </Column>
            </TreeList>
        );
    }
}
export default App;See Also
visible
Specifies the button's visibility.
Information about the row and column that contain the button.
| Name | Type | Description | 
|---|---|---|
| column | The column's properties. | |
| component | The widget's instance. | |
| row | The row's properties. | 
true if the button should be visible; otherwise, false.
Use the function when you need to show or hide the button for specific rows. For example, the widget lists online orders and allows users to edit them. A Cancel button should allow users to cancel their orders. However, completed orders should not be canceled. The visible function in this case may look as follows:
jQuery
$(function () {
    $("#treeListContainer").dxTreeList({
        // ...
        columns: [{
            type: "buttons",
            buttons: [{
                text: "Cancel",
                visible: function (e) {
                    return !e.row.isEditing && !e.row.data.isCompleted;
                }
            }]
        }]
    });
});Angular
<dx-tree-list ... >
    <dxi-column type="buttons">
        <dxi-button
            text="Cancel"
            [visible]="isCancelButtonVisible">
        </dxi-button>
    </dxi-column>
</dx-tree-list>
import { DxTreeListModule } from "devextreme-angular";
// ...
export class AppComponent {
    isCancelButtonVisible (e) {
        return !e.row.isEditing && !e.row.data.isCompleted;
    }
}
@NgModule({
    imports: [
        // ...
        DxTreeListModule
    ],
    // ...
})If you have technical questions, please create a support ticket in the DevExpress Support Center.