昨天做项目发现一个问题,当修改了grid中的一条选中记录,保存并刷新store之后再次点开或者读取该选中行record发现还是修改之前的值,但是当鼠标选中其它行并再次回到刚刚修改的记录之后,点开或者读取record发现是修改后的数据,后台数据在修改保存后已刷新,界面显示也是最新数据,但是该条record在不更改已选项的情况下依然是之前的数据,在网上找到了一个解决办法并学习下别人的思路。

在项目开发中遇到这样一个问题,点击Grid中的一条记录并修改,修改完后保存并且刷新表格,后台已保存成功,并且前台grid中的值也已经改变。这时候被修改的记录还处于选中状态,然后再次点修改,发现表单中的值还是原来的值,但是在选择另外一条记录后,再次选择这条记录并修改时发现值已改变。

如图:这是原记录,现在我们在角色说明后面加几个*号,测试

保存后,原来被修改的记录还处于选择状态,然后我点击修改按钮,发现Form中的值还是修改前的值。

注:表单是通过loadRecord的方式加载的值,在每次赋值前都执行了reset(true)方法,所以不是Form缓存的问题

当我们选择另外一条记录,然后再此选择这条记录是值又变成了修改后的值

经过分析我觉得可能是grid中的SelectionModel中的记录并没有改变,所以才会到这这样的情况,正常流程应该是store重新加载后,需要更新SelectionModel中选中的记录。

于是查看Ext.selection.Model的源码,找到为store绑定事件的方法getStoreListeners,方法内容如下。

getStoreListeners:function(){varme =this;return{add:me.onStoreAdd,clear:me.onStoreClear,bulkremove:me.onStoreRemove,update:me.onStoreUpdate,load:me.onStoreLoad,idchanged:me.onModelIdChanged,refresh:me.onStoreRefresh

};},

发现监听了store的load事件,于是猜想问题应该出在onStoreLoad方法上。于是找到这个方法

/**

* @abstract

* @private

*/onStoreLoad:Ext.emptyFn,

发现Ext对这个方法的声明是abstract,这个方法是一个空的方法。由此发现Ext的SelectionModel并没有对store重新加载后进行任何的处理。所以我们就自己处理,重写Ext.selection.Model的onStoreLoad方法,在这个方法中更新选中的记录,代码如下

/**

* 处理Grid重新加载过后selectionModel中的记录不更新的问题

* me.selected中存放的是选中的记录的集合

*/

Ext.override(Ext.selection.Model,{

onStoreLoad:function(store, records, successful, eOpts){

var me = this,

length = me.selected.getCount( );

//如果没有选中的记录,则不需要进行任何的操作

if(length===0)return;

//遍历selected并更新其中的记录

me.selected.eachKey(function(key,item){

var model = store.getById(key);

//如果获取到了model就更新,否则从selected中移除

if(model){

me.selected.add(model);//add时会覆盖掉原来的值

}else{

me.selected.removeAtKey(key);

}

})

}

});

加上上面的代码后问题解决。

extjs重新激活grid_处理Extjs的gridpanel修改一条记录并重新加载store之后,已选项model的record并没有改变的问题...相关推荐

  1. ExtJS 等待两个/多个store加载完再执行操作

    Extjs加载Store是异步加载的,这有很多好处.但是当我们要在两个或多个不同的store加载完再执行一些操作时,异步加载就成了一个问题.在Stack Overflow 等网站搜集并试用了几个处理方 ...

  2. ExtJS GridPanel的ColumnModel 动态加载

    var colM = "company,id,flyline"; var colMArr = colM.split(","); var colLength = ...

  3. ExtJs TreePanel 不能加载ashx数据的解决办法

    今天学习Extjs TreePanel 时在加载动态数据时经常加载不进来,因为我是使用MVC2获取动态数据的,单独调试MVC的返回数据时OK的,网上有很多解决方案,其中最简单的是: loader: n ...

  4. 关于ExtJS通过单击左边的treePanel在居中的panel加载页面问题

    2019独角兽企业重金招聘Python工程师标准>>> 这几天整ExtJS通过单击treePanel在居中的panel加载页面问题.第一次加载的页面正常显示在panel中,但是从第二 ...

  5. extjs 文件加载、解析流程

    extjs版本:4.2.1 在html中添加应用的启动脚本,如下: <script src="app.js"></script> 2. 用户访问html的时 ...

  6. extjs ajax 遮罩层,[Ext JS 4] 实战之Load Mask(加载遮罩)的显示与隐藏

    前言 Load Mask(遮罩)效果,就是在页面还没有完全显示出来之前, 加上一个转装转的效果. 类似: 添加这样的效果有两个好处: 1. 在页面没完全show出来之前, 把后面的页面给遮罩起来, 防 ...

  7. ExtJS表单提交与加载全攻略

    ExtJS用formPanel来做为表单元素的容器.默认情况下,是使用Ajax异步提交.接下来,对formPanel的提交跟加载,做个小总结. 先来看布局代码 1 var frm  2 Ext.onR ...

  8. extjs html页面刷新,ExtJS onReady引发的浏览器对页面的加载过程

    页面加载完成后,Ext.onReady 事件被触发. 那到底,这个页面加载包括哪些东西? (如果你还能找到这个:http://zhidao.baidu.com/question/161113033.h ...

  9. ExtJs懒人笔记(2) ExtJs页面布局

    ExtJs学习目录 懒人笔记(1) ExtJs初探 ExtJs懒人笔记(2) ExtJs页面布局 ExtJs懒人笔记(3) 动态Grid的实现 页面布局,对于做Web开发者来说是一定不会陌生的,而这些 ...

最新文章

  1. SAP 采购订单显示含税价制作方案
  2. linux 中关于网络的配置方法
  3. Nginx配置实例-动静分离实例:搭建静态资源服务器
  4. STM32 的 BOOT 概述
  5. Easy Number Challenge
  6. 广东--阳江--闸波一天游归来,上PP~~
  7. 飞鸽传书系统上开发是一件多么惬意的事情
  8. 索尼音乐客户端linux,索尼将为 Linux 带来设备内存不足的解决方案,
  9. MOTU Digital Performer 11.0 WiN 老牌音乐制作宿主软件
  10. 串口通信实验(通过串口控制LED、蜂鸣器)
  11. Science:拟南芥根系三萜化合物塑造特异的微生物组
  12. 苹果应用商店反垄断案败诉,市值蒸发500多亿美元;脸书杠上了土耳其政府;Nutanix 扩展多云产品组合……...
  13. Java中的异常捕获
  14. 小学生python游戏编程arcade----可旋转的坦克的发射子弹
  15. Scratch课程设计(二)
  16. matlab经纬度画轨迹图_MATLAB将经纬度坐标转换成直角坐标
  17. PTX/CR偶联物胶束/TAT-KLA/阿司匹林偶联/双氢青蒿偶联紫杉醇的制备
  18. 植被覆盖度(FVC)计算
  19. ROS中两轮差速底盘给定线速度和角速度值的合法性检查
  20. 什么是产品运营?文中这个举例感觉让我思路明朗了许多

热门文章

  1. 全球顶会论文作者,28天手把手带你复现顶会论文
  2. ECCV 2020 | 智能自动零售可行吗?AI安全应引起广泛关注!
  3. python获取中文字体点阵坐标_点阵汉字显示 - freecamel的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. 【JVM调优工具篇】使用MAT工具分析dump文件(查看GC Roots)
  5. Ⅶ:教你一招利用zookeeper作为服务的配置中心
  6. mybatis-day1入门案例
  7. Windows——双系统环境下没有启动Windows 启动管理器(自动跳过操作系统选择界面)解决方案
  8. 【问题记录】pytorch自定义数据集 No such file or directory, invalid index of a 0-dim
  9. C++【typedef 关键字 详解】
  10. Python基础day04【函数(定义与调用、文档说明、传参函数、全局变量、返回值、嵌套调用)】