【问题标题】:ExtJS grid not render correctlyExtJS 网格无法正确呈现
【发布时间】:2025-12-24 15:50:06
【问题描述】:

我有一个网格,当我加载页面时,它有时无法正确呈现。这很烦人,我正在尝试一种解决方案来强制它正确渲染。
上面的数据一切正常,但有时渲染不正确。
这只是我第一次加载网格的时候,因为之后它会正确渲染。 这是渲染正确的网格: 这是我第一次加载网格时有时给我的渲染错误。 我已经尝试了所有这些修复,但没有任何效果:

grid.getView().refresh();
---
grid.columns[2].setVisible(false);
grid.columns[2].setVisible(true);
---
grid.getStore().filterBy(function() { return true; });

单击左侧网格后,它会在右侧网格上应用过滤器,如果渲染不正确,它就会变得正确。所以我相信这是一个渲染问题。 我问这个问题是最后的手段。有人有什么建议吗?
我正在使用 ExtJS 4。

【问题讨论】:

  • 控制台没有错误?
  • 你能用fiddle复制它吗?
  • @serg 我从来没有遇到过控制台错误。这很困难,因为错误在第一次加载时只出现了几次,而且我通常不会在那个时候打开 Firebug。当我确定我会回答这个问题时
  • @aviram83 我无法用小提琴重现它,因为我相信错误是因为我将它不在数据库上呈现的字段设置为“索引”,我相信从那时起它开始发生这个错误。这可能是我也做过的其他事情。在小提琴中,我无法让应用程序从数据库中加载记录(至少我知道如何这样做)
  • 如果您尝试从 json 文件进行简单加载?

标签: extjs grid extjs4 refresh render


【解决方案1】:

尝试在你的组件上添加一个后渲染。这将强制重新计算容器布局。

类似

grid.on("afterrender", function() {
            this.doLayout();
 });

或与听众一起:

listeners: {
             afterrender: function(e) {
                this.doLayout();       
             }

【讨论】: