You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kendo删除按钮功能异常:未调用Transport的Destroy接口且报错

Kendo Grid 删除行但不触发Destroy API + 类型错误的解决方案

先帮你梳理下问题核心:点击删除确认后前端行消失了,但没调用Transport里的Destroy接口,还抛出了Cannot convert undefined or null to object的类型错误,这大概率是Kendo Grid无法正确识别要删除的数据记录导致的,下面给你分步排查和解决的方案:

最常见原因:未配置DataSource的Model唯一ID

Kendo Grid必须知道每条数据的唯一标识,才能生成正确的Destroy请求并处理行删除逻辑。如果缺失这个配置,就会出现前端删行但不发请求,还触发内部类型错误的情况。

修复代码示例:

// 正确配置DataSource的schema.model.id
var myDataSource = new kendo.data.DataSource({
  transport: {
    read: "/your-api/read",
    destroy: "/your-api/destroy" // 确保接口路径正确
  },
  schema: {
    model: {
      id: "recordId", // 替换成你数据中实际的唯一字段,比如userId、id
      fields: {
        // 其他字段配置,比如name: { type: "string" }
      }
    }
  }
});

确保id指向的数据字段存在且不为空/undefined,这是Kendo识别数据的核心标识。

自定义删除逻辑的坑:错误操作DOM而非数据项

如果你自己写了删除按钮的点击事件,很可能是直接操作了表格行,而没有先获取对应的数据项,导致Kendo内部找不到要同步的数据对象。

错误示例(会导致问题):

$(".custom-delete-btn").click(function() {
  let grid = $("#grid").data("kendoGrid");
  let row = $(this).closest("tr");
  grid.removeRow(row); // 直接删行,但没告诉DataSource要删哪条数据
});

正确的自定义删除逻辑:

先获取对应的数据项,再通过DataSource删除并同步:

$(".custom-delete-btn").click(function() {
  let grid = $("#grid").data("kendoGrid");
  let dataItem = grid.dataItem($(this).closest("tr"));
  
  if (dataItem && confirm("确定要删除这条记录吗?")) {
    grid.dataSource.remove(dataItem); // 先通知DataSource删除数据
    grid.dataSource.sync(); // 手动触发同步,确保Destroy请求发送
  }
});

简化测试:先使用Kendo内置删除命令

如果自定义逻辑太复杂,建议先放弃自定义,用Grid内置的删除命令验证是否正常:

$("#grid").kendoGrid({
  columns: [
    // 其他列配置
    { command: "destroy", text: "删除" }, // 内置删除命令,自动处理确认框+请求
  ],
  editable: "popup", // 或inline,必须开启编辑模式
  dataSource: myDataSource
});

用内置命令测试如果正常,就说明问题出在你的自定义逻辑上;如果还是有问题,就回到第一步检查DataSource的ID配置。

最后验证步骤

  1. 打开浏览器控制台的Network标签,点击删除后观察是否有Destroy请求发送;
  2. 检查数据中的唯一ID字段,确保每条数据的ID都不为空/undefined;
  3. 暂时移除所有自定义的删除事件,先让内置功能跑通,再逐步添加自定义逻辑。

内容的提问来源于stack exchange,提问作者user2849331

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:23:25