• ext panel 移除item失效的解决办法


    ext panel 移除item失效的解决办法

    在form中使用remove 移除item的时候,会留下他的html标签label,为了解决这个问题在网上搜了一下。

    方法为:

    //解决form中remove 一个field 时,fieldLabel不能被删除的问题   
    Ext.override(Ext.layout.FormLayout, {
        renderItem : function(c, position, target){
            if(c && !c.rendered && c.isFormField && c.inputType != 'hidden'){
                var args = [
                       c.id, c.fieldLabel,
                       c.labelStyle||this.labelStyle||'',
                       this.elementStyle||'',
                       typeof c.labelSeparator == 'undefined' ? this.labelSeparator : c.labelSeparator,
                       (c.itemCls||this.container.itemCls||'') + (c.hideLabel ? ' x-hide-label' : ''),
                       c.clearCls || 'x-form-clear-left'
                ];
                if(typeof position == 'number'){
                    position = target.dom.childNodes[position] || null;
                }
                if(position){
                    c.formItem = this.fieldTpl.insertBefore(position, args, true);
                }else{
                    c.formItem = this.fieldTpl.append(target, args, true);
                }
                c.render('x-form-el-'+c.id);
                c.container = c.formItem; // must set after render, because render sets it.
                c.actionMode = 'container';
            }else {
                Ext.layout.FormLayout.superclass.renderItem.apply(this, arguments);
            }
        }
    });

    还有就是动态添加field:

                 在formpanel已经被渲染后,使用form.add添加不能渲染,即使使用了doLayout().这是formLayout的中存在

    Bug

    使用Ext.getCmp().add和 doLayout成功,但是form 又找不到该field。通过firebug 发现在 form的items中没有添加

    该field,因此使用form.items.add(field)添加后,成功。因此在删除时,要从form.items.remove删除。

    相关代码:

    form中有一个fieldset ,其中有几个隐藏的panel ,先站位。将创建好的field添加到这些panel中,并将其显示。

    {
       xtype : 'fieldset',
       id:'propertyForm',
       layout : 'column',
       labelWidth : 60,
       autoHeight : true,
       title : '
    商品属性',   
       items : [  {
        columnWidth : .5,
        layout : 'form',
        hidden:true,
        id:'container1'
       }, {
        columnWidth : .5,
        layout : 'form', 
        hidden:true,
        id:'container2'    
       }, {
        columnWidth : .5,
        layout : 'form', 
        hidden:true,
        id:'container3'
       }, {
        columnWidth : .5,
        layout : 'form', 
        hidden:true,
        id:'container4'
       }

    ]}

    删除:

    clearPropertyForm:function(){  
      var p ="container"
      for(i=1;i<=10;i++){
       var pp =p+i;
       if(Ext.getCmp(pp).items.length>0){ 
        this.form.remove("item"+i);
        Ext.getCmp(pp).remove("item"+i);    
       }  
       Ext.getCmp(pp).hide();
        
      }
      this.doLayout();  
      Ext.getCmp('propertyForm').hide();
     },

    添加:

    var field =new Ext.form.TextField({
         id : "item" + i,
         fieldLabel : label,
         name : name,
         value:label1[1],     
         anchor : '100%'     
        });  
        this.form.add(field);
       Ext.getCmp(c+i).show();
       Ext.getCmp(c+i).add(field); 

      this.doLayout();  

    Ext.getCmp('propertyForm').show();

  • 相关阅读:
    visual studio 2013 中配置OpenCV2.4.13 姿势
    全栈技能图谱
    Lua 基础
    Lua手动编译姿势
    字符串专题:几种奇怪的算法
    字符串专题:KMP POJ 3561
    字符串专题:后缀数组
    字符串专题:map POJ 1002
    2015安徽省赛 G.你来擒孟获
    求方程解问题
  • 原文地址:https://www.cnblogs.com/hannover/p/1940558.html
Copyright © 2020-2023  润新知