微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript-Sencha Extjs-如何通过一次设置记录中的数据来更新网格?

我有一个包含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();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐