【问题标题】:KendoUI grid cancel checked/selected rowsKendoUI 网格取消选中/选中的行
【发布时间】:2018-04-12 07:26:02
【问题描述】:

我有一个带有复选框的 KendoUI 网格来选择多行,它的 dataBound 事件是:

function onDataBound(e) {
e.sender.items().each(function () {
    var dataItem = e.sender.dataItem(this);
    kendo.bind(this, dataItem);
    if (dataItem.IsChecked) {
        $(this).addClass("k-state-selected");
    }
});

}

而绑定字段是:

{ 
    field:"IsChecked",  
    template: "<input type='checkbox' class='checkbox' data-bind='checked:IsChecked' />"
}

它工作正常,但是现在当我单击工具栏取消按钮时,我刚才手动检查(并选择)的行仍在显示,但我想回到原始状态(在我手动检查/选择行之前)

如何在自定义工具栏按钮中执行此取消操作?

【问题讨论】:

  • 这并不能直接回答您的问题,但以防万一您错过了它,从 R2 2017 SP1 开始,现成的 kendo 网格提供了基于复选框的选择.假设您可以使用该版本的剑道或更高版本,它可能会使您尝试实现的目标变得更加简单。请参阅 this article 以获取有关如何执行您当前正在尝试的操作的演示,以及指向较新的更简单方法的链接。
  • 感谢您的参考文章,是的,我明白了,但由于某些原因,我在当前项目中仍在使用旧版本

标签: javascript jquery kendo-ui kendo-ui-grid


【解决方案1】:

这对我有用:

$(grid.element).on("click", ".toolbar-cancel", function() {
    grid.clearSelection();
    grid.dataItems().forEach(function(dataItem) {
        dataItem.set("IsChecked", false);
    });
});

Demo

【讨论】:

  • 谢谢!但是我的情况还有一个问题,如果我将 selectable 设置为 true,那么我检查的行可能与我选择的行不对应,所以我想将 selectable 设置为 false,当它为 false 时,grid.clearSelection() 是已禁用,那么我应该如何自己实现 clearSelection?
  • @nineveh.Y 检查this。它似乎适用于selectable: false
  • 我明白了,但在我的项目中它说“TypeError: e.selectable is undefined”发生在 grid.clearSelection() 中,我猜我的 kendoUI 版本有点旧?
  • 我明白了,非常感谢!
  • 另外一种方式可以直接调用$("#grid").data("kendoGrid").dataSource.read();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多