2011-03-03 34 views
0

在一个Ext Js-应用程序我工作我有一个窗体面板(包括其他控件)包含三个组合框,每个组合框都有不同的数据存储区。我需要用现有数据加载表单并在表单中显示。这适用于所有simpel控件(文本框,复选框),但组合框存在问题。分机:绑定数据存储后的组合的数据存储已加载

每个组合框都使用数据存储,但是我可以看到在表单加载其自己的数据之前只有一个存储加载,导致该组合框显示正确的文本,另外两个组合框显示值。如果我单击并关闭组合框而未进行选择,则会显示正确的文本。

有没有办法延迟表单的加载或表单的绑定,直到所有的数据存储加载?数据存储区是自动加载的本地存储区,表单面板在afterlayout事件中调用它自己的加载。

回答

1

问题是,加载您的表单执行的setValue是在实际加载组合框的存储之前执行的。

您可以尝试实现修复秃鹰和ExtJS的动物在这个论坛主题已经propsed上sencha.com:http://www.sencha.com/forum/showthread.php?75751-OPEN-42-ComboBox-s-setValue-call-with-a-remotely-loaded-Store

它基本上只是延迟上的任何组合框的setValue调用,直到ComboBox的商店是完全加载。

+0

似乎很奇怪,需要这样的修复,我想这是一个很常见的情况。或者是通过使用远程类型的非自动加载数据存储,在表单上使用组合框的首选方式?有关这方面的文档非常薄,我无法弄清楚推荐的方法是做什么这些事情...... – JDT 2011-03-03 12:33:13

+0

你不是第一个注意到这个......组合框的实现和它们的异步本质是一段时间以来,我一直是ext社区内的一个讨论点,我发布的链接说明了这一点,因为有几个请求将修复添加到官方的ext分发中。有很多地方可以改进分机,但总的来说这是一个很棒的系统。 – ChrisR 2011-03-03 13:22:04

0

渲染完成后加载表单面板。是否有任何具体的原因,你在加载后的事件表格?

之后加载表单事件而不是afterlayout。当所有表单完全呈现时,发生afterrender事件。

+0

这不是由于渲染,而是由于表单加载操作在三个组合框存储加载之前执行的事实。由于商店的异步性质,这不是很简单。 – ChrisR 2011-03-03 12:14:22