标签:extjs updates grid multiple-records javascript
我有一个包含1000多个行(用户)和一个检查列的网格,该网格用于将每个用户链接到另一个特定实例(例如一组用户).
我实现了一个“全选”按钮,它可以执行以下操作:
var items = view.store.data.items;
var dataIndex = 'dataIndexOfCheckColumn';
var check = true;
//view.store.suspendEvents();
for (var i = 0; i < items.length; i++)
{
var record = view.store.getAt(i),
record.set(dataIndex, check);
this.fireEvent('checkchange', this, i, check, record);
}
//view.store.resumeEvents();
这种方法的问题在于,每个“记录”集都会触发某些事件(验证,取消联接等),并且对于1000条记录来说太多了. Chrome在几乎一秒钟的时间内完成了此操作,但是IE(9,10)对于“ …”来说是一个痛苦.将近2分钟.
还有另一种方法吗?我正在考虑在商店上挂起事件,然后恢复它们并与网格同步商店,但是我在文档中找不到如何实现这样的事情.
我正在使用ExtJs版本4.0.1
解决方法:
我设法通过暂停和恢复事件来解决此问题,然后刷新视图.如果有人需要这个:
var items = view.store.data.items
var dataIndex = 'dataIndexOfCheckColumn';
var check = true;
/*suspend events to block firing the events on setting record values
then resume and refresh the view
*/
view.store.suspendEvents();
for (var i = 0; i < items.length; i++)
{
var record = view.store.getAt(i);
record.set(dataIndex, check);
this.fireEvent('checkchange', this, i, check, record);
}
view.store.resumeEvents();
view.getView().refresh();
标签:extjs,updates,grid,multiple-records,javascript 来源: https://codeday.me/bug/20191122/2061695.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。