+ -
当前位置:首页 → 问答吧 → 请教一个extjs问题!

请教一个extjs问题!

时间:2011-09-06

来源:互联网

最近做了一个extjs的动态生成的panel组件,panel里面放的是复选框和文本框的组合。
现在遇到的问题是,我的for循环里面写的是给动态的panel组件里面的复选框和文本框赋值,而且想做到当不选中复选框时,灰掉文本框。所以说要到复选框的check事件里面写。但是我写的时候却获取不到组件(可能原因是复选框是动态获取的组件)。所以说就实现不了这个功能!
JScript code

[align=center]
for(i=0;i<r.length;i++){
                var name=r[i].value;
                var label=r[i].display;
                ifnames.push(label);
                ipaddrlist = new Ext.Panel({
                    autoHeight:true,
                       width:600,
                       ///height:70,
                       labelWidth:50,
                       items:[{
                         layout:'column',
                         width:500,
                         items:[{
                                columnWidth:.2,
                                layout: 'column',
                                items: [
                                    new Ext.form.Checkbox({
                                        id:label,
                                        style:'margin-left:25px',
                                        name:name,
                                        listeners:{
                                             check:function(){
                                             }
                                        }
                                    }),{
                                        width:33,items:[{xtype:'label',text:label}]
                                    }
                                ]
                        },{
                                columnWidth:.8,
                                layout: 'form',
                                items: [
                                    new Ext.form.TextField({
                                           id:label+'ip',                  
                                           width:130,
                                           fieldLabel : "<span style='margin-left:10px'>虚拟IP地址</span>",   
                                        name:name
                                    })
                                ]
                        }]
                   }]
                });
                
                Ext.getCmp('ip_addr').items.add(ipaddrlist);
                other.doLayout(true);
            }[/align]


                [align=center]for(i=0;i<ifnames.length;i++){
                    var swit=Ext.getCmp(ifnames[i]).getValue();
                    var ipaddr=Ext.getCmp(ifnames[i]+'ip').getValue();
                    Ext.get(ifnames[i]).on('click',function(){    
                        if(swit==true){
//                            Ext.getCmp(ifnames[i]+'ip').disable(true);
                        }else if(swit==false){
//                            Ext.getCmp(ifnames[i]+'ip').enable(true);
                        }
                    })
                    for(j=0;j<net.length;j++){
                        if(net[j]==ifnames[i]){
                            Ext.getCmp(ifnames[i]).setValue(true);
                            Ext.getCmp(ifnames[i]+'ip').setValue(vitual[j]);
                        }
                    }
            }[/align]



求高手看看!谢谢!!!

作者: adtadtadt   发布时间: 2011-09-06

等组件加载完全后再执行看看(把执行函数放到动态创建节点的后面)

作者: BLUE_LG   发布时间: 2011-09-06

Ext.getCmp('ip_addr').items.add(ipaddrlist);
改为
Ext.getCmp('ip_addr').add(ipaddrlist);

作者: fanchuanzhidu   发布时间: 2011-09-06

引用楼主 adtadtadt 的回复:
最近做了一个extjs的动态生成的panel组件,panel里面放的是复选框和文本框的组合。
现在遇到的问题是,我的for循环里面写的是给动态的panel组件里面的复选框和文本框赋值,而且想做到当不选中复选框时,灰掉文本框。所以说要到复选框的check事件里面写。但是我写的时候却获取不到组件(可能原因是复选框是动态获取的组件)。所以说就实现不了这个功能!
JScript code

[ali……

反正哪都一样的!都会提示‘Ext.getCmp(...)为空或者不是对象’

作者: adtadtadt   发布时间: 2011-09-06

引用 2 楼 fanchuanzhidu 的回复:

Ext.getCmp('ip_addr').items.add(ipaddrlist);
改为
Ext.getCmp('ip_addr').add(ipaddrlist);

这2个有什么区别吗?我现在改了还是会提示‘Ext.getCmp(...)为空或者不是对象’

作者: adtadtadt   发布时间: 2011-09-06

Ext.getCmp(this.id + 'ip').disable()

作者: MadEric   发布时间: 2011-09-06

引用 5 楼 maderic 的回复:

Ext.getCmp(this.id + 'ip').disable()

......

作者: adtadtadt   发布时间: 2011-09-06