kendo grid delete - 确认窗口问题

时间:2016-06-25 11:35:58

标签: kendo-ui kendo-grid crud destroy confirm

删除项目时确认弹出窗口有问题。当我点击“删除”时,确认窗口弹出的次数超过一次,我不知道为什么。第二个问题是我如何改变那个窗口的文本?我试过这段代码但是不行:

columns: [
   ...,
{command: [{name: "destroy", text: "Delete Item", click: deleteItem}],
 title: " ", width: "100px"}
]

和删除功能:

function deleteItem(e) {
   var item = this.dataItem($(e.currentTarget).closest("tr"));
   if (confirm("delete item " + item.Name + " ?")) {
      var grid = $("grid").data("kendoGrid");
      grid.dataSource.remove(item);
      grid.dataSource.sync();
      grid.refresh();
   }
}

编辑: 我发现的第二个问题是,点击更新按钮后,网格中的一些项目被删除

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

可能你必须尝试在删除处理程序

之前使用以下代码
e.preventDefault()

这将阻止默认窗口的执行,并为确认弹出提供空间。因此,只允许在你面前的一个窗口 我希望这有帮助

答案 2 :(得分:0)

重复确认是由于您将命令绑定到名称" destroy"这是网格提供的built-in command。该命令正在触发,显示内置确认,然后显示您的确认。如果你想自己处理destroy方法,只需将命令重命名为" destroy"这是您独有的,因此默认命令事件不会触发:

{command: [{name: "delete", text: "Delete Item", click: deleteItem}], title: " ", width: "100px"}

您的deleteItem函数中似乎还有其他一些问题。请尝试以下方法:

function deleteItem(e) {
   var item = this.dataItem($(e.target).closest("tr"));
   if (confirm("delete item " + item.Name + " ?")) {
      var grid = $("#grid").data("kendoGrid");
      grid.dataSource.remove(item);
      grid.dataSource.sync();
      grid.refresh();
   }
}

注意我已将您的代码更改为使用 e.target 而不是 e.currentTarget ,并修改了您的jQuery选择器用于查找 #grid 而不是 grid ,假设您要查询ID而不是一类。

请参阅this snippet,了解与您尝试的相似的工作示例。