【问题标题】:ExtJS and simple grid panelExtJS 和简单的网格面板
【发布时间】:2015-09-07 19:52:33
【问题描述】:

我有一个简单的网格,没有与任何数据库表直接连接。只是几天的原始数据和列中的人员(比如说 31 x 20)。在初始化过程中,我从一些表中读取数据,计算并将它们写入这个网格。然后我必须计算很多索引,通过原始数据、列和其中的一部分进行一些汇总。只是统计数据。

从网格单元读取没有问题,这非常快。我在将数据写入单元格时遇到问题。例如。填充此网格的过程如下:

days = Ext.getStore('StoreDays').getRange();
employees = Ext.getStore('StoreTeam').getRange();
Ext.each(days, function (day) {
    Ext.each(persons, function (guy) {
        tmp = day.get('from');
        day.set('start_' + persons.data.prs_numer, start);

        ... and 4 additional SET operations to grid cells
    });
});

而且这个程序的工作时间超过 3 分钟!!!我不知道为什么以及如何编写好的代码来正常写入这些数据。如此友善并提示我如何! 此外,我无法刷新,例如我想要的每个原始设置后的原始设置。 能不能给我提示一下?

【问题讨论】:

    标签: extjs


    【解决方案1】:

    单元格更新可能意味着网格需要自行刷新,因此它会刷新 31x20x5(31 行,20 列,每个单元格 5 次)次!

    相反,这样做:

    store.suspendEvents();
    // Do your update
    store.resumeEvents();
    grid.getView().refresh();
    

    【讨论】:

    • 不,不幸的是,它不能解决我的问题。时间还是一样的。而且,这个网格是用 celledit 插件准备的,让用户更正一些单元格。还有用于“beforeedit”和“afteredit”事件的侦听器。我在这个事件中设置了断点,我知道当程序进行我的两个循环时不使用这个事件。当我使用调试器时,我看到浏览器“挂起”了 3 分钟。
    • 那我建议你发布一个工作测试用例,否则我不知道你在做什么。
    • 谢谢您的信息,我可以发布它,但是这个应用程序是更大系统的一部分,所以在没有环境和数据库的情况下运行它会出现问题。我可以尝试用有问题的网格来准备这部分应用程序,并让它在一些静态数据上运行。对吗?
    • 重现问题的东西。
    • 同时我找到了解决方案。不是店铺的问题,是布局的问题。当我设置:循环之前的 Ext.suspendLayouts() 和之后的 Ext.resumeLayouts(true) 然后网格刷新 - 时间为 3 秒。但仍然不知道(这次浏览器死机,在 5 分钟之前现在 3 秒)如何例如在这样的循环中显示每个新单元格。
    猜你喜欢
    • 2011-02-15
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多