假设两个combo,一个省,一个市,作为一个FormPanel的Item。此FormPanel可用来编辑Grid的某条记录,这种情况下要处理初值加载的问题。
前置条件,省autoload: true, 市: false。
正常场景下,选择省才触发时间加载市的数据。 也就是说,初始时市是不加载数据的。这样的设计在新建时没问题,但是在编辑时,需要自动根据省来加载市的数据。否则对市SetValue就缺乏了数据根源。
大概步骤记录一下备忘(肯定有更好的方式,以后再研究):
重载ComboBox的SetValue方法(好像是?有可能记错,反正差不多,懒得翻代码了),在里面的赋值代码之后增加fire一个aftersetvalue事件,然后记得注册此事件。 当然利用现有定义的事件也是可以的,只要是在setValue之后触发的。
在province的combo里添加对aftersetvalue事件的listener, 用来:根据当前value重新load city combo的store.
在city combo的store的load上添加listener, 用来:用form.findField找到city combo,获取它的value。这个value是form在调用自身的SetValue方法时赋值给city combo的。但当时此combo由于没有加载数据,所以当时的SetValue过程不完整。现在要重新setValue一下。
这就差不多了。当然,还要做的事情是上面这套新加的机制必须限制其只在数据加载时起作用,方法就很多了,不赘述。