Ext combox 双关联初始化问题

rikugun 2008-06-16
请教一下各位:
  最近在做combox的双关联的时候发现一个问题,第一次选择第一个选项的时候,不能自动过滤第二个选项的值.
如: 先选省份时,城市那个选项不能自动过滤为响应省份的城市.但是先点一下城市,再选省份的话就没有问题.估计是刚开始城市这个combox没有初始化的原因.
还有一个问题就是,我是用一个按键,点击以后弹出一个formpanel的window用来输入数据的,第一次点击2个combo都正常显示,但是关闭后再点击打开时就发现第二个combo消失了,第一个很正常.
   各位大大是如何解决的呢,谢谢

下面是一个汽车厂商和车系的双关联代码,也有同样的问题.

createForm: function(){
        return new Ext.FormPanel({
            bodyStyle: 'padding-top:6px',
            defaultType: 'textfield',
            labelAlign: 'right',
            labelWidth: 80,
            labelPad: 0,
            frame: true,
            defaults: {
                width: 150
            },
            items: [{
                fieldLabel: '车型名称',
                name: 'name',
                allowBlank: false,
                blankText: '请填写品牌名称'
            }, new Ext.form.ComboBox({
                emptyText: '请选择厂商类型',
                allowBlank: false,
                fieldLabel: '厂商类型',
                hiddenName: 'type',
                displayField: 'name',
                valueField: 'val',
                typeAhead: true,
                triggerAction: 'all',
                mode: 'local',
                store: car.data.prttype,
                listClass: 'x-combo-list-small',
                listeners: {
                    'beforeselect': function(box, record, index){
                        Ext.getCmp('prt').store.clearFilter();
                        Ext.getCmp('prt').clearValue();
                        Ext.getCmp('prt').store.filter('type', record.get('value'));
                    }
                }
            }), new Ext.form.ComboBox({
                id: 'prt',
                emptyText: '请选择厂商名称',
                allowBlank: false,
                fieldLabel: '生产厂商',
                hiddenName: 'prt_id',
                displayField: 'name',
                valueField: 'id',
                typeAhead: true,
                triggerAction: 'all',
                store: car.data.prt_store,
                mode: 'local',
                listClass: 'x-combo-list-small'
            })]
        });
    }

//下面是数据,用后台生成的JS数据
Ext.namespace('car','car.data');
//车商类型
car.data.prttype=[[false,'国内'],[true,'国外']];

//车商
car.data.prt= [[1,'Benz',true],[2,'奥迪',false],[3,'BMW',false],[4,'马自达',false],[5,'丰田 ',true],[6,'本田',true],[7,'三菱',true],[8,'通用',true],[9,'陆虎',true],[10,'陆虎 ',true],[11,'lotus',true]];
car.data.prt_store=new Ext.data.SimpleStore({
 fields:['id','name','type'],
 data:car.data.prt
 });
//车系
car.data.classes=[[1,'Fz',1],[2,'ABC',2],[3,'CC',9],[4,'dadas',3],[5,'561',8],[6,'A8',2],[7,'A6',2]];
car.data.class_store=new Ext.data.SimpleStore({
 fields:['id','name','prt_id'],
 data:car.data.classes
 });


rikugun 2008-06-16
刚刚发帖就发现第一个问题javaeye论坛上就有解决方法,我真是猪啊.
不过第二个问题存在
第一个问题解决方法
http://extjs.com/learn/Tutorial:Linked_Combos_Tutorial_for_Ext_2
http://www.iteye.com/topic/125861


 new Ext.form.ComboBox({
                id: 'prt',
                emptyText: '请选择厂商名称',
                allowBlank: false,
                fieldLabel: '生产厂商',
                hiddenName: 'prt_id',
                displayField: 'name',
                valueField: 'id',
                typeAhead: true,
                triggerAction: 'all',
                store: car.data.prt_store,
                mode: 'local',
                listClass: 'x-combo-list-small',
                [b]lastQuery:''  //加入这行,不过在Ext API里头没有找到这个参数[/b]
            })


Global site tag (gtag.js) - Google Analytics