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

如何在ExtJS GridPanel中获取被过滤隐藏的所有已更新行?

解决ExtJS GridPanel获取所有已更新行(含筛选隐藏行)的问题

核心思路

GridPanel的所有数据都维护在绑定的Store中,筛选只是视图层的显示过滤,不会影响Store对数据修改状态的跟踪。直接从Store中提取修改记录即可,无需关注当前行是否可见。

具体实现方法

  • 获取所有已修改/新增的记录
    使用Store的getModifiedRecords()方法,它会返回所有状态为dirty(已修改)或phantom(新增)的记录,包含被筛选隐藏的行:

    // 获取Grid绑定的Store
    var store = grid.getStore();
    // 获取所有已修改/新增的记录
    var allModifiedRecords = store.getModifiedRecords();
    
  • 区分不同操作类型的记录
    如果需要分别提取新增、修改、删除的记录,可使用以下细分方法:

    // 获取新增的记录(phantom属性为true)
    var addedRecords = store.getNewRecords();
    // 获取已修改的记录(dirty属性为true且phantom为false)
    var updatedRecords = store.getUpdatedRecords();
    // 获取已删除的记录
    var removedRecords = store.getRemovedRecords();
    

关键注意事项

  • 确保Store的trackChanges属性为true(默认值即为true,除非手动修改过),否则Store不会跟踪数据的修改状态。
  • 数据提交到服务器后,调用store.commitChanges()清除所有记录的修改标记,避免后续重复提交相同数据。
  • 无论使用表头筛选、filter()还是filterBy()方法过滤数据,Store的底层完整数据和修改状态都不会被改变,上述方法始终有效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:15:48