Extjs 使用 checkboxgroup 时无法获取到 group 中控件的问题

配置如下:

{
	fieldLabel: '角色选择',
	xtype: 'checkboxgroup',
	items: [
		{boxLabel: '测试1', name: 'f1'},
		{boxLabel: '测试2', name: 'f1'},
		{boxLabel: '测试3', name: 'f3'}
	]
}

然后用 formPanel.getForm().findField(‘f1’) 获取控件 f1,返回为 null。
我用的是 Ext 3.2,好像 Ext 2 也有这个问题。

解决方法:
给 Ext 打个补丁:

Ext.override(Ext.form.BasicForm, {

    findField : function(id){
        var field = this.items.get(id);

        if(!field){
            // --------- It was: ---------
            // //Iterate through children on first level
            // this.items.each(function(f){
            //     if(f.isFormField && (f.dataIndex == id || f.id == id || f.getName() == id)){
            //         field = f;
            //         return false;
            //     }
            // });

            // --------- It is now: ---------
            // Iterate through children on all levels
            var fn = function(f) {
              if(field)
                return false;   //stop iteration, if field was found already

              if(f.isFormField && (f.dataIndex == id || f.id == id || f.getName() == id)){
                field = f;    // field was found
                return false;
              }
              else if(f.items) {
                f.items.each(fn);   // iterate through child items
              }
            }
            this.items.each(fn);
            // --------- End of my changes ---------

        }

        return field || null;
    }

});

参考这里:
http://www.extjs.com/forum/showthread.php?44199-2.2-CheckboxGroup-Struggling-with-item-search&p=209958

— EOF —

发表评论

电子邮件地址不会被公开。 必填项已用*标注