Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ExtJS:链接组合框拼图_Extjs_Combobox - Fatal编程技术网

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() } );
  })
}