removeRow()不适用于IE中的多行

时间:2013-09-24 21:49:45

标签: jquery asp.net-mvc kendo-ui

我正在尝试从Kendo UI Grid删除多行。我首先尝试配置网格以允许选择多行,然后在每个选定的行上调用Grid.removeRow(),但这会阻止任何编辑器模板选择显示。

配置:

// ...
.Selectable(selectable =>
  {
      selectable.Enabled(true);
      selectable.Mode(GridSelectionMode.Multiple);
  })
// ...

删除按钮逻辑:

// ...
var grid = $("#TimesheetGrid").data("kendoGrid");
grid.select().each(function (index, item)
{
    grid.removeRow(item);
});
// ...

由于选择元素在我的编辑器模板中不起作用,我删除了配置行以启用多行选择,并添加了一个复选框列。

// ...
.Selectable(selectable =>
  {
      selectable.Enabled(true);
  })
// ...

// ...
$("#MyGrid tbody tr td.select input[type=checkbox]").each(function (index, item)
{
    if ($(item).is(":checked"))
    {
        var $row = $(item).parents("tr");
        grid.removeRow($row);
    }
});
// ...

这也行不通。在IE中,它删除第一个选定的行,然后忽略其余的行。我错过了什么?我正在使用Kenudo UI版本2013.2.716。

1 个答案:

答案 0 :(得分:2)

似乎在IE中调用removeRow()会破坏与遍历剩余已检查行相关的内容。我能够通过填充要删除的行数组来解决这个问题,然后删除每个项目。

var deleting = new Array();

$("#MyGrid tbody tr td.select input[type=checkbox]").each(function (index, item)
{
    if ($(item).is(":checked"))
    {
        var $row = $(item).parents("tr");
        deleting.push($row);
    }
});

$.each(deleting, function(index, item)
{
    grid.removeRow(item);
});