Extjs4 Combobox 聯動始終出現loading錯誤的解決辦法,extjs4combobox
當重複選者combobox 聯動時,下級的Combobox 會出現loading的錯誤表現形式,雖然Store資料已載入完也是一樣。
廢話少說貼代碼就知道如何處理了:(注意紅色部分的關鍵語句)
}, {
xtype:'combobox',
labelStyle:'color:blue;',
labelWidth : 70,//標籤寬度
width : 200,//欄位寬度
msgTarget: 'side',
allowBlank: false, //是否允許空值
labelStyle:'color:red;',
value: '',
emptyText: '請選擇上層業務。。。。',
queryMode: 'local',
displayField: 'DeptName',
valueField: 'DeptName',
store:myUpDeptStore,
editable: false,
triggerAction:'all',
fieldLabel: "上層業務",
listeners:{
'select': function(combo,record,number){ //// 該事件會返回選中的項對應在 store中的 record值. index參數是排列號.
var _value = combo.getValue();
Ext.getCmp('AddDeptCombo').clearValue();
Ext.getCmp('AddDeptCombo').store.load({ params: {
UpDept:_value //record[0].data.DeptName
}
});
}
},
name: "UpDept"
}, {
xtype:'combobox',
id:'AddDeptCombo',
defaultListConfig:{ //取消loading的Mask
loadMask: false
},
labelStyle:'color:blue;',
labelWidth : 70,//標籤寬度
width : 200,//欄位寬度
msgTarget: 'side',
allowBlank: false, //是否允許空值
labelStyle:'color:red;',
value: '',
emptyText: '請選擇部門/班組。。。。',
queryMode: 'local',
displayField: 'DeptName',
valueField: 'DeptName',
store:myDeptStore,
editable: false,
fieldLabel: "部門",
name: "Dept"
}]
備忘:這個錯誤應該是Extjs的Bug吧,資料已載入了但沒有取消掉Mask層,所以我們只能手工去除了。
extjs40 ComboBox 組合框級聯問題第一個ComboBox 選擇省份後,要第二個ComboBox 出現該省的城市
代碼風格很不一樣呢,我之前做的時候也遇到過這種問題,放佛是因為載入combobox和載入資料的先後問題造成的
解決的方法是,先載入combox,再載入資料,代碼如下
Ext.onReady(function() {
//省份
new Ext.form.ComboBox({
id: 'SF',
//省份的資料自動載入
store: Ext.create('Ext.data.Store', {fields: ['name']}),
displayField: 'name',
valueField: 'name',
listeners:{
'blur': askCity
}
});
});
function askCity(){
Ext.Ajax.request({
url: 'xxx.jsp',
params: {
sf: Ext.get('SF').getValue()
},
success: function(response){
//這裡不需要removeall了,因為回來的資料只會是該省份下的城市
var respText = Ext.decode(response.responseText);
Ext.get('cs').store.loadData(respText);
},
failure: function(response){
Ext.Msg.alert('意外', '請求資料時發生意外,請重新整理頁面');
}
});
}
//城市的combo第一次運行不載入資料,或者填個blankText: '請選擇省份',
ExtJs 裡 兩個combobox 聯動 選擇完 第一個 第二個綁定相應資料 怎做 要例子
Ext.onReady(function() {
Ext.QuickTips.init();
var provinces = [[1, '北京'], [2, '上海']];
var cities = new Array();
cities[1] = [[11, '海澱'], [22, '東城']];
cities[2] = [[33, '黃埔'], [44, '浦東'], [55, '靜安']];
var comboProvinces = new Ext.form.ComboBox({
store : new Ext.data.SimpleStore({
fields : ["provinceId", "provinceName"],
data : provinces
}),
listeners : {
select : function(combo, record, index) {
comboCities.clearValue();
comboCities.store
.loadData(cities[record.data.provinceId]);
}
},
valueField : "provinceId",
displayField : "provinceName",
mode : 'local',
forceSelection : true,
blankText : '請選擇省份',
emptyText : '請選擇省份',
hiddenName : 'provinceId',
editable : false,
triggerAction : 'all',
allowBlank : true,
fieldLabel : '請選擇省份',
name : 'provinceId',
width : 80
});
var comboCities = new Ext.form.ComboBox({
store : new Ext.data.SimpleStore({
fields : ["cityId", 'cityName'],
data : []
}),
valueField : "cityId",
displayField : "cityName",
mode : 'local',
forceSelection : true,
blankText : '選擇地區',
emptyText : '選擇地區',
hiddenName : 'cityId',
editable : false,
triggerAction : 'all&......餘下全文>>