如何在设置记录数据时屏蔽 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 >= grid.getStore().getCount()) grid.setLoading(false);
在循环中。或者在 jsfiddle 中显示你的代码。
非常感谢 Vlad 的及时回复和帮助!!
如果您在重新配置网格后期待加载掩码,则有一个 bug in ExtJS 4.2。此答案可用作解决方法。以上是关于如何在设置记录数据时屏蔽 Extjs 网格并在设置后取消屏蔽?的主要内容,如果未能解决你的问题,请参考以下文章
如何在具有嵌套数据的网格中设置组合框值? Extjs 4.2 Mvc