ExtJS:链接组合框拼图
我编写了特殊的组合对象,将其用作链接组合。这是:ExtJS:链接组合框拼图,extjs,combobox,Extjs,Combobox,我编写了特殊的组合对象,将其用作链接组合。这是: comboDivClass = Ext.extend(Ext.form.ComboBox, { fieldLabel: 'Divisions', anchor: '95%', lazyRender:true, store:new Ext.data.Store({ proxy: proxy,
comboDivClass = Ext.extend(Ext.form.ComboBox, {
fieldLabel: 'Divisions',
anchor: '95%',
lazyRender:true,
store:new Ext.data.Store({
proxy: proxy,
baseParams:{rfb_type:'divisions'},
reader: divReader,
autoLoad: true
}),
displayField:'div_name',
allowBlank:false,
valueField:'div_id',
triggerAction:'all',
mode:'local',
listeners:{
select:{
fn:function(combo, value) {
if (this.idChildCombo) {
var modelCmp = Ext.getCmp(this.idChildCombo);
modelCmp.setValue('');
modelCmp.getStore().reload({
params: { 'div_id': this.getValue() }
});
}
}
}
},/**/
hiddenName:'div_id',
initComponent: function() {comboDivClass.superclass.initComponent.call(this);}})
如您所见,此组合框在子组合框存储(设置为idChildCombo)处加载数据。
好啊我是这样申报的
new comboDivClass({id:'sub0div',idChildCombo:'sub1div'}),
new comboDivClass({id:'sub1div'})
是的,它可以工作,但它有一些奇怪的问题-它不仅加载sub1div存储,还加载sub0div存储。为什么?我做错了什么?我看到的一件事是,您有
模式:“本地”
config,而它应该是远程的
还有一件事需要考虑:你为什么不更像这样做:
var c1 = new comboDivClass({id:'sub0div'});
var c2 = new comboDivClass({id:'sub1div'});
c1.on('select',function(combo, value) {c2.getStore().reload({
params: { 'div_id': c1.getValue() }
})});
其思想是将子字段链接到父字段,而不是将父字段链接到子字段,这样您就可以链接到任何类型的表单字段非唯一组合
在子组合中,您必须使用三列[group,value,label]存储,其中group是主字段的值
通过这种方式,您可以管理多个主字段的模式。谢谢,但远程处理模式:“本地”不做任何更改,在您的示例中,我得到相同的结果-两个存储区的数据加载:(
proxy:proxy,
no。试试。我尝试使用不同的代理,但没有任何更改。(我也尝试使用不同的阅读器:)
ChildCombo.setMasterField( masterField ) {
masterField.on('change', function(field){
this.getStore().filterBy( function(){ //filter by masterFIeld.getValue() } );
})
}