日期:2014-05-16  浏览次数:20369 次

EXTjs的ComboBox联动不刷新
昨天终于是把联动写出来了~~  
但是今天早上忽然发现,这个联动为啥不刷新呢?二级combobox初始化显示data2的数据,选择一级combobox后数据变成data3了,但是从新选择的时候data3数据不变了……。
是那个reload()方法没执行么?
我看了看API 似乎reload()是store的方法,但是我写成combo.store.reload();也不对啊……
报的错变成this.proxy为空或不是对象 了。是我数据写的不对么?
求助啊求助……!

下面是代码(写的有点儿乱,见谅):

JScript code


var data=[['aaa,'hubei'],['bbb,'jiangxi'],['ccc','anhui']];
        
var store = new Ext.data.SimpleStore({
             fields: ['name', 'value'],
             data : data
        });

var data2=[['p1','hubei'],['p2','jiangxi'],['p3','anhui']];
var store2 = new Ext.data.SimpleStore({
                 fields: ['name', 'value'],
                 data : data2
            });

{
          xtype:'combo',
                    store:store,
                    emptyText:'请选择...',
                    id:'checkState',
                    mode:'local',
                    triggerAction:'all',
                    displayField:'name',
                    valueField : 'value',
                     listeners:{
                    "select":function(){
                        var v1 = Ext.get("checkState").dom.value;
                               var data3=[['t1'+v1,'hubei'],['t2','jiangxi'],['t3','anhui']];
            var store3 = new Ext.data.SimpleStore({
                             fields: ['name', 'value'],
                             data : data3
                            });
                    var combo = Ext.getCmp("checkState2");
                    combo.store=store3;   
                            combo.reload();
                            
                         }
                     }
                    
},
{
          xtype:'combo',
                    store:store2,
                    emptyText:'请选择...',
                    id:'checkState2',
                    mode:'local',
                    triggerAction:'all',
                    displayField:'name',
                    valueField : 'value',
                    listeners:{
                    "select":function(){
                            alert(Ext.get("checkState2").dom.value);   //获取id为combo的值
                         }
                     }
                    
}





------解决方案--------------------
1.在select 事件中, 你只是想改变checkState2的值, 因此可以调用combo.store.loadData()方法。
2.你的每个data的item 的value 全部是hubei, jiangxi, anhui, 如果你选择了checkState1的值后你如何确定checkState2的item到底有没有变化, 可以把item改成别的。

------解决方案--------------------
探讨

引用:
1.在select 事件中, 你只是想改变checkState2的值, 因此可以调用combo.store.loadData()方法。
2.你的每个data的item 的value 全部是hubei, jiangxi, anhui, 如果你选择了checkState1的值后你如何确定checkState2的item到底有没有变化, 可以把ite……