{ xtype : 'combo', hiddenName : 'selPersonForUnit', fieldLabel : '选择人员', triggerAction : 'all', readOnly : true, editable : false, lazyInit : false, mode : 'local', store : UnitPersonsDS, displayField : 'persName', valueField : 'persid', listeners : { select : function(combo, record, index) { UnitFuncDS.load({ params : { persid : combo .getValue() } }); } } }, { xtype : 'combo', hiddenName : 'selFuncForUnit', fieldLabel : '选择岗位', triggerAction : 'all', readOnly : true, editable : false, lazyInit : false, mode : 'local', store : UnitFuncDS, displayField : 'funcName', valueField : 'funcId' }
我是这样做的
2个 combo 都是local,store的数据从服务器读
点击一个按钮会弹出一个window,上面就有这2个combo,在弹出的时候就第一个combo的store就会去load数据,然后因为combo的mode 为local,这时下拉第一个combo会展示加载好的数据(假如为remote的话会再次加载,造成浪费)
然后设置第一个combo的select事件是加载第2个combo的store的数据(把第一个combo的选择数据传到后台),然后下拉第2个的时候就可以展示数据,以此类推可以一直联动下去
关于mode
假如为local 则 点击下拉的时候 直接combo去取store的数据 然后展示 不管有没有
假如为remote 则一定会让store load一次,不管之前是否已有数据