Kendo Grid 2022版本:如何获取网格已删除记录?原getDestroyed()已失效
Kendo UI 2022 获取网格已删除记录的替代方案
在Kendo UI 2022版本中,getDestroyed()方法确实已被移除,你可以通过以下几种方式获取网格中标记为删除的记录:
- 直接筛选数据源数据集合
已删除的记录会被保留在数据源中,并自动添加_destroy: true的标记,你可以直接筛选这个集合:
// 获取所有未提交的已删除记录 const deletedItems = grid.dataSource.data().filter(item => item._destroy);
注意:这个方法仅适用于尚未调用sync()提交删除请求的场景,一旦sync()执行完成,这些标记为删除的条目会被从数据源中移除。
- 通过change事件实时跟踪删除操作
如果需要持续记录所有删除的条目,可以监听数据源的change事件,在操作类型为remove时收集记录:
let deletedRecords = []; // 绑定数据源change事件 grid.dataSource.bind("change", function(e) { if (e.action === "remove") { // 将删除的条目加入集合 deletedRecords.push(...e.items); } });
这种方式可以保留所有删除过的记录,即使调用了sync(),只要你不主动清空deletedRecords数组,就能一直访问这些数据。
- 使用items()方法获取全量原始数据
如果网格开启了分页、排序或过滤,data()方法只会返回当前页的数据集,此时可以用items()获取数据源的全量原始条目,再筛选已删除记录:
const allRawItems = grid.dataSource.items(); const deletedItems = allRawItems.filter(item => item._destroy);
额外注意事项
- 只有通过网格内置的删除操作或调用数据源
destroy()方法删除的条目,才会自动添加_destroy标记;如果是手动移除的条目,需要自行设置该标记才能被识别。 - 若需要在
sync()提交后仍保留已删除记录,务必在提交前将这些数据复制到独立的变量中存储。
内容的提问来源于stack exchange,提问作者A DEv
相关产品推荐
相关产品推荐

