如何在设置记录数据时屏蔽 Extjs 网格并在设置后取消屏蔽?

Posted

技术标签:

【中文标题】如何在设置记录数据时屏蔽 Extjs 网格并在设置后取消屏蔽?【英文标题】:How to MASK the Extjs Grid while setting the record data and unmask after set? 【发布时间】:2013-04-17 08:30:35 【问题描述】:

我在一个有 5 列的网格内一次显示 1500 到 2000 条记录。工具栏上有一个组合框。当会有组合更改时,我需要更新 2 列数据。为此,我正在阅读商店并设置每条记录的值(2 列)。为 2 列设置的任何值都来自另一个 JsonStore。

由于有超过 1000 条记录,它需要一些时间来更新 2 列数据。现在我试图在组合更改和 unmsak() 设置所有记录后屏蔽 Grid。

如何在设置所有记录值后取消屏蔽网格?

提前致谢!!!!

【问题讨论】:

请参考jsfiddle.net/alexrom7/kUeU9/4,在combochange上我正在设置来自另一家商店的每条记录的值。 【参考方案1】:

您可以使用 setLoading() 方法:

grid.setLoading(true); // <-- show default load mask to grid
grid.setLoading('some text'); // <-- show load mask with your text
grid.setLoading(false); // <-- hide load mask

【讨论】:

updateRecords:function(combo, newValue, oldValue, columnId,statId) if(oldValue!=undefined) grid.setLoading('some text'); alert("要设置所有记录"); var cindex = combo.getValue(); var column = Ext.getCmp(columnId); grid.getStore().each(function(record, index, count) var recordDataObject = record.get(statId); record.set(columnId, recordDataObject[cindex]); ); grid.setLoading(false); 这工作正常,但是当我删除警报时它根本不起作用......意味着不显示掩码和取消掩码 @aswininayak 尝试:if(index &gt;= grid.getStore().getCount()) grid.setLoading(false); 在循环中。或者在 jsfiddle 中显示你的代码。 非常感谢 Vlad 的及时回复和帮助!! 如果您在重新配置网格后期待加载掩码,则有一个 bug in ExtJS 4.2。此答案可用作解决方法。

以上是关于如何在设置记录数据时屏蔽 Extjs 网格并在设置后取消屏蔽?的主要内容,如果未能解决你的问题,请参考以下文章

如何在具有嵌套数据的网格中设置组合框值? Extjs 4.2 Mvc

ExtJS:: 如何过滤网格中的行,但不在存储中

store.load 后的 Extjs 网格选择有不正确的数据

如何正确对齐 ExtJs 网格

ExtJs Gridpanel 存储刷新

Extjs Grid Grouping - 设置默认标题/值