日期:2014-05-16 浏览次数:20385 次
使用EXTJS4,写联动的combo控件,首次选择联动效果,可以正常显示和选择。
?
?
再次切换选择‘一级编码’,动态加载‘二级编码’数据可以正常加载,但是始终出现一个loading的遮盖层,选择不了下拉数据,奇怪的问题,寻求解决方案:
?
?
代码格式基本如下:
?
1、存储first_store,‘一级编码’的数据源,设置为autoLoad : true
?
?
var first_store = Ext.create('Ext.data.Store', { model : 'eht.model.ColVal', proxy : { type : 'ajax', url : '../myconfig/Config_viewConfigForCV.go?command=all.first&n='+new Date().getTime(), fields : ['col_id', 'col_name'], reader : { type : 'json', root : 'data' } }, autoLoad : true, remoteSort:true });
?2、combo的‘一级编码’,在select中处理‘二级编码’的查询设置。
?
{ xtype : 'combo', fieldLabel : '一级编码', blankText : "此项不能为空", emptyText : '此项不能为空', allowBlank : false, margin : '0 5 0 0', id : 'first_id', name : 'first_id', hiddenName : 'first_id', displayField : "col_name", valueField : "col_id", triggerAction: 'all', queryMode: 'local', store : first_store, listeners : { select : function(combo, record, index) { Ext.getCmp('second_id').clearValue(); Ext.getCmp('second_id').store.load({params:{first_id:combo.value}}); } } }
?3、cmbo的‘二级编码’设置
?
xtype : 'combo', editable : false, allowBlank : false, margin : '0 5 0 0', fieldLabel : '二级编码', id:'second_id', name:'second_id', hiddenName:'second_id', emptyText : '请选择...', displayField : 'col_name', valueField : 'col_id', queryMode: 'local', triggerAction: 'all', typeAhead: true, store : { extend: 'Ext.data.Store', model : 'eht.model.ColVal', proxy : { type : 'ajax', url : '../myconfig/Config_viewConfigForCV.go?command=all.second&n='+new Date().getTime(), fields : ['col_id', 'col_name'], reader : { type : 'json', root : 'data' } }, autoLoad : false, remote : true, remoteSort:true, listeners : { load: function(store){ Ext.getCmp('second_id').setValue(store.getAt(0).get('col_id')) } } }, lastQuery: '' }
?4、不知道哪里的问题,可以看见数据都可以正常加载,就是在选择那个‘二级编码’后,切换‘一级编码’,再次选择‘二级编码’,就出现一个loading的遮盖层,选择不了数据,但是数据可以看见已经正常加载了????
store.on('load', function (store, records, successful, options) { if (successful && Ext.typeOf(combo.getPicker().loadMask) !== "boolean") { combo.getPicker().loadMask.hide(); } });