Kendo MultiSelect使值被选择并禁用

问题描述 投票:0回答:1

需要帮助。我在这里创建了一个简单的演示,如果选择了dataBound节点并从编辑中禁用(应用k-state-disable),我想从checked='yes'中实现。我尝试设置(selected,true)(disabled,true),但似乎不起作用。

DEMO IN DOJO

<select id="multiselect"></select>

$("#multiselect").kendoMultiSelect({
    dataSource: {
    data: [
      {id:1, Name: "John 1", checked: 'no'},
      {id:2, Name: "John 2", checked: 'yes'},
      {id:3, Name: "John 3", checked: 'no'},
      {id:4, Name: "John 4", checked: 'yes'},
      {id:5, Name: "John 5", checked: 'no'},
      {id:6, Name: "John 6", checked: 'no'}
    ]
  },
  dataTextField: "Name",
    dataValueField: "id", 
    dataBound: function(e) {
    var multiselect = $("#multiselect").data("kendoMultiSelect");
    var x = multiselect.dataSource.view();

    for (var i = 0; i < x.length; i++) {
      if (x[i].checked == "yes") {
        //x[i].set("selected", true);
        //x[i].set("disabled ", true);
        //x[i].prop("disabled", true).addClass("k-state-disabled");
      } 
    }
  },

});
javascript jquery kendo-ui kendo-grid kendo-multiselect
1个回答
0
投票

我想提出另一种方法来实现这一目标。尽可能避免在dataBound中更改DOM。因此,我建议使用itemTemplate选项和itemTemplate事件:

您可以在select选项中应用select类:

.k-state-disabled

这会使该选项看起来像已禁用。但是仍然可以在列表中选择它,因此您可以使用itemTemplate事件来防止这种情况:

itemTemplate: '<span # if (data.checked === "yes") { #class="k-state-disabled"# } #>#: Name #</span>'

在该事件中使用select将阻止用户选择与条件匹配的选项。

select: function(e) { if (e.dataItem.checked === 'yes') { e.preventDefault(); } },

© www.soinside.com 2019 - 2024. All rights reserved.