【问题标题】:How to delete multiple rows in Kendo grid?如何删除剑道网格中的多行?
【发布时间】:2012-09-12 09:56:21
【问题描述】:

我有一个剑道网格,第一列是复选框。我想使用这些复选框删除多行。我一次只能删除一行。

我尝试添加

.Batch(true) 

对于数据源,下面是我在网格外删除按钮的功能。

function deleteRule() {
    var grid = $("#grid").data("kendoGrid");

    grid.select().each(function () {
        grid.removeRow($(this));
    });
}

有什么建议吗?

【问题讨论】:

  • 您是否必须使用复选框来选择要删除的行?你为什么不让你的网格选择多行,然后每次选择一行时,你将每一行/记录(uid)保存在一个数组中。然后单击删除按钮,遍历 gridDataSource 并使用“remove”[gridDataSource.remove(selectedRow);] 方法,然后“sync”[gridDataSource.sync();] 它。

标签: kendo-ui


【解决方案1】:

哥们,

你究竟是如何删除那一行的?为什么使用 select 方法?

基本上,我建议您创建一个删除按钮,该按钮执行删除所选行的逻辑 - 我猜您正在使用一个带有复选框的模板列。如果您向该复选框添加一个类,您可以轻松地选择网格内的所有复选框。因此,假设复选框的类名称是 cool,那么您可以在删除按钮单击处理程序中执行以下逻辑:

function whenYourDeleteButtonIsClicked(){
    var grid = $("#grid").data("kendoGrid");
    $('.cool:selected').each(function(){
       grid.removeRow($(this).closest('tr'));
    })
}

我希望你有这个想法。 祝你好运。

【讨论】:

  • 感谢您的回复。这就是我的第一列在修改后的样子。它是否正确 ? columns.Bound(p => p.checkBox).ClientTemplate("").Title("");这是我的函数 function deleteRule() { var grid = $("#grid").data("kendoGrid"); $('.checkboxcls:selected').each(function () { grid.removeRow($(this).closest('tr')); }) } 现在没有任何效果:(请帮忙。我很新所有这些东西。
  • 不确定出了什么问题 - 以某种方式发送一些小项目,以便我看看
  • 为了检索这些行,我宁愿使用$("#grid").find("input:checked"),但我认为它与您的解决方案大致相同......
  • 那么为什么在删除每一行后为每一行调用网格数据绑定?我在数据绑定上处理每个网格行,在删除它们之后,为每一行调用数据绑定,并且该行仍然认为删除的行在那里,所以我得到了很多 js 错误。
【解决方案2】:

这是我用的

效果很好

    $('#your-grid-id').data("kendoGrid").select().each(function () {
        grid.dataSource.remove(grid.dataItem($(this).closest("tr")));
   });

【讨论】:

  • 这在过去可能有效。现在最新的2018剑道报错:TypeError: grid.dataSource is undefined
  • 你必须有一个变量已经引用到网格,比如var grid = $('#your-grid-id').data("kendoGrid")
  • 你是对的。我的盲眼看不出我没有将“dataSource”中的“S”大写。 var grid = $("#grid").data("kendoGrid"); grid.dataSource.read();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-28
  • 1970-01-01
  • 1970-01-01
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多