Kendo UI Grid - Custom command button disabled depending on boolean property

How can I set the class to disabled for a custom command on a Kendo grid depending on the boolean value of a property?

I want to use this approach to make the button disabled: https://docs.telerik.com/kendo-ui/knowledge-base/disable-the-grid-command-buttons

Javascript:

{ command: { name: "custom", text: "Exclude", click: excludeCategorization }, title: " ", width: "60px" }

I want to add a condition like this using the property IsEnabled but if possible using the k-state-disabled class

#= IsEnabled ? disabled="disabled" : "" # 

Upvotes: 0

Views: 5731

Answers (1)

Oggy
Oggy

Reputation: 1666

I don't believe you can assign classes conditionally through a template, however you can use the dataBound event to crawl through the rows and manipulate the classes. I would start with all of them disabled and then enable the ones that need to be active, but you can build your own logic. Here's an example:

<div id="grid"></div>
<script>
  var grid;
  $("#grid").kendoGrid({
    dataBound:function(e){
      var grid = $("#grid").data("kendoGrid");
      var items = e.sender.items();
      items.each(function (index) {
        var dataItem = grid.dataItem(this);
        $("tr[data-uid='" + dataItem.uid + "']").find(".excludeCategorization").each(function( index ) {
          if(dataItem.isEnabled)
             {
                $(this).removeClass('k-state-disabled')   
             }
        });
      })
    },
    columns: [
      { field: "name" },
      { field: "enabled" },
      { command: [{ className: "k-state-disabled excludeCategorization", name: "destroy", text: "Remove" },{ className: "k-state-disabled", name: "edit", text: "Edit" }] }
    ],
    editable: true,
    dataSource: [ { name: "Jane Doe", isEnabled: false },{ name: "John Smith", isEnabled: true } ]
  });
</script>

Here's a link to a Dojo: https://dojo.telerik.com/ubuneWOB

Upvotes: 3

Related Questions