详细描述在此
http://blog.csdn.net/aaoxue/article/details/8556202两个combobox的store的数据都在前台写好,思路是,第一个combobox选值后就对第二个store根据条件进行过滤,将第二个combobox展开,问题是,直接展开没有问题,当我再点击第二个组件的下拉框时,展开的没有过滤之前store的数据。如何解决?
//性别store
var sexStore = Ext.create('Ext.data.Store', {
fields: ['code', 'name'],
data : [
{"code":"0", "name":"female"},
{"code":"1", "name":"male"}
]
});
//所有人Store
var people = Ext.create('Ext.data.Store', {
fields: ['code','sexcode', 'name'],
data : [
{"code":"0", "sexcode":"0", "name":"li"},
{"code":"1","sexcode":"0", "name":"zhang"},
{"code":"2","sexcode":"1", "name":"sun"},
]
});
//combobox显示指定性别store
var peopleChoose = Ext.create('Ext.data.Store', {
fields: ['code','sexcode', 'name']
});
// 选择性别 combobox
Ext.create('Ext.form.ComboBox', {
fieldLabel: 'Choose Sex',
store: sexStore,
id:'combo.ChooseSex',
queryMode: 'local',
displayField: 'name',
valueField: 'code',
renderTo: Ext.getBody(),
listeners:{
'change':function(thisField,newValue,oldValue,epots){
if(newValue!=null){
Ext.getCmp('combo.ChoosePeople').setDisabled(false);
people.filterBy(function(record){
return record.get('sexcode')==newValue;
});
Ext.getCmp('combo.ChoosePeople').expand();
//使用peopleStore时
// peopleChoose.removeAll();
// people.each(function(record){
// //过滤通过性别选择符合的人员数据
// if(record.get('sexcode')==newValue){
// peopleChoose.add(record);
// }
// });
}else{
Ext.getCmp('combo.ChoosePeople').setDisabled(true);
}
}
}
});Ext.create('Ext.form.ComboBox', {
fieldLabel: 'Choose People',
//store: peopleChoose,
store:people,
disabled:true,
id:'combo.ChoosePeople',
queryMode: 'local',
displayField: 'name',
valueField: 'code',
autoSelect:false,
renderTo: Ext.getBody()
});extjs combobox store
http://blog.csdn.net/aaoxue/article/details/8556202两个combobox的store的数据都在前台写好,思路是,第一个combobox选值后就对第二个store根据条件进行过滤,将第二个combobox展开,问题是,直接展开没有问题,当我再点击第二个组件的下拉框时,展开的没有过滤之前store的数据。如何解决?
//性别store
var sexStore = Ext.create('Ext.data.Store', {
fields: ['code', 'name'],
data : [
{"code":"0", "name":"female"},
{"code":"1", "name":"male"}
]
});
//所有人Store
var people = Ext.create('Ext.data.Store', {
fields: ['code','sexcode', 'name'],
data : [
{"code":"0", "sexcode":"0", "name":"li"},
{"code":"1","sexcode":"0", "name":"zhang"},
{"code":"2","sexcode":"1", "name":"sun"},
]
});
//combobox显示指定性别store
var peopleChoose = Ext.create('Ext.data.Store', {
fields: ['code','sexcode', 'name']
});
// 选择性别 combobox
Ext.create('Ext.form.ComboBox', {
fieldLabel: 'Choose Sex',
store: sexStore,
id:'combo.ChooseSex',
queryMode: 'local',
displayField: 'name',
valueField: 'code',
renderTo: Ext.getBody(),
listeners:{
'change':function(thisField,newValue,oldValue,epots){
if(newValue!=null){
Ext.getCmp('combo.ChoosePeople').setDisabled(false);
people.filterBy(function(record){
return record.get('sexcode')==newValue;
});
Ext.getCmp('combo.ChoosePeople').expand();
//使用peopleStore时
// peopleChoose.removeAll();
// people.each(function(record){
// //过滤通过性别选择符合的人员数据
// if(record.get('sexcode')==newValue){
// peopleChoose.add(record);
// }
// });
}else{
Ext.getCmp('combo.ChoosePeople').setDisabled(true);
}
}
}
});Ext.create('Ext.form.ComboBox', {
fieldLabel: 'Choose People',
//store: peopleChoose,
store:people,
disabled:true,
id:'combo.ChoosePeople',
queryMode: 'local',
displayField: 'name',
valueField: 'code',
autoSelect:false,
renderTo: Ext.getBody()
});extjs combobox store
先感谢版主回答,多整一个数据源就是为了避免全部加载的问题。目前这段代码中只有三个数据源,测试只用到两个数据源,就真真的出现了我说的问题。链接里面有全部的代码,版主可以看看。