extjs 自定义或自身控件统一入口

Simlink.instanceComponent = function(field){
    var compo = Ext.getCmp(field.el);
    if(compo != undefined){Ext.destroy(combo);}
    //var anchor;
    if(field.width == null)
    {
        if(field.anchor == null){field.anchor = "98%";}
        field.width = 10;
    }
    var cmpCfg = {
        id : field.id,
        fieldLabel : field.fieldLabel,
        name : field.fieldName,
        xtype : field.xtype,
        vtype : field.vtype,
        anchor : field.anchor,
        width : (field.width - 0),
        hidden : field.hidden,
        allowBlank : field.allowBlank,
        readOnly : field.readOnly,
        listeners : field.listeners
    };
    //alert(Ext.getCmp(field.el));
    var compo = [cmpCfg,function(value){return value;}];
    var fieldxtype = field.xtype;
    if(fieldxtype != null){
        if(fieldxtype.indexOf('muticombox') != -1){
            cmpCfg = Simlink.getComboXtype({    
                action : 'all',
                fieldLabel : field.fieldLabel,
                fieldName : field.fieldName,
                type : field.type,
                displayFieldTpl : field.displayFieldTpl,//displayFieldTpl: '{value} ({key})',
                url : field.url || null,
                el : field.el,
                listWidth : field.listWidth,
                anchor : field.anchor,
                hidden : field.hidden,
                 resizable: true,
                 allowAddNewData:true,
                 fixedHeight:field.fixedHeight,
                 addNewDataOnBlur : true,
                 cls:field.cls,
                //autoScroll :field.autoScroll,
                hiddenName : field.hiddenName,
                forceSelection : false,
                queryParam : field.queryParam || 'query',
                width : (field.width == 1) ? undefined : field.width ,
                valueField : field.valueField || "value",
                displayField : field.displayField||'text',
                mode : field.mode || 'remote',//远程
                listeners : field.listeners,
                pageSize : field.pageSize,
                allowBlank : field.allowBlank,
                navigateItemsWithTab : true
            });
            compo[0] = Ext.apply(cmpCfg, {
                xtype : 'muticombox',
                resizable : true
            });
        }
        else if(fieldxtype.indexOf('combo') != -1)
        {
            //case 'combo' ://下拉框控件
            //case 'comborelate'://下拉框关联控件
            compo[0] = Simlink.getComboXtype(field);
            compo[1] = function(value)
            {
                var resultValue = value;
                if(field.valueField == "value")//反向查询显示值为text,传到后台实为value
                {
                    this.editor.getStore().data.each(function(obj){
                        if(value == obj.json.value)
                        {
                            resultValue = obj.json.text;
                            return;
                        }
                    });
                }
                //否则,显示为text,传到后台也为text
                return resultValue;
            };
        }
        else if(fieldxtype.indexOf('checkbox') != -1){
            compo[0] = Ext.apply(cmpCfg, {
                xtype : 'checkbox',
                fieldLabel : field.fieldLabel,
                name : field.fieldName,
                listeners : field.listeners
            });
        }
        else if(fieldxtype.indexOf('textarea') != -1){
            compo[0] = Ext.apply(cmpCfg, {
                xtype : 'textarea',
                fieldLabel : field.fieldLabel,
                name : field.fieldName
            });
        }
        else if(fieldxtype.indexOf('datetimefield') != -1){
            compo[0] = Ext.apply(cmpCfg, {format : 'H:i',editable : false,value: field.defaulValue || new Date()});
            compo[1] = function(value)
            { 
                if(value instanceof Date)
                { 
                    return Ext.util.Format.date(value, CONSTANT.DATE.FORMAT4);
                }
                else
                { 
                    return value; 
                }
            };
        }
        else if(fieldxtype.indexOf('datefield') != -1){
            
            compo[0] = Ext.apply(cmpCfg, {format : CONSTANT.DATE.FORMAT5,editable : true});
            compo[1] = function(value)
            { 
                if(value instanceof Date)
                { 
                    return Ext.util.Format.date(value, CONSTANT.DATE.FORMAT5);
                }
                else
                { 
                    return value; 
                }
            };
        }
        else if(fieldxtype.indexOf('timefield') != -1){
            compo[0] = Ext.apply(cmpCfg, {
                el : field.el,
                xtype : 'timepickerfield',
                defaulValue : field.defaulValue
            });
        }
        else if(fieldxtype.indexOf('unit') != -1){//出入量带单位的控件
            compo[0] = {xtype : 'unit',xtypes : field.xtypes,sourceIds : field.type,fieldLabel : field.fieldLabel};
            compo[1] = function(value)
            {
                return this.editor.getValue();
            };
        }
        else if(fieldxtype.indexOf('relate') != -1){//护理单关联控件
            compo[0] = {xtype : 'relate',xtypes : field.xtypes,type : field.type,sourceIds : field.sourceIds,fieldLabel : field.fieldLabel,anchor : '98%'};
            compo[1] = function(value)
            {
                return this.editor.getValue();
            };
        }
        else if(fieldxtype.indexOf('daterange') != -1){
            compo[0] = Ext.apply(cmpCfg,{xtype : 'datetworange',fieldLabel : field.fieldLabel,fieldName : field.fieldName});
            compo[1] = function(value)
            {
                return this.editor.getValue();
            };
        }
        else if(fieldxtype.indexOf('numberrange')!= -1){
            compo[0] = Ext.apply(cmpCfg,{xtype : 'numberrange',fieldName : field.fieldName});
            compo[1] = function(value)
            {
                return this.editor.getValue();
            };
        }
        else if(fieldxtype.indexOf('datetworange')!= -1){
            
            compo[0] = Ext.apply(cmpCfg,{xtype : 'datetworange',fieldName : field.fieldName});
            compo[1] = function(value)
            {
                return this.editor.getValue();
            };
        }
        else if(fieldxtype.indexOf('dynaddtextfield')!= -1){
            
            compo[0] = Ext.apply(cmpCfg,{xtype :'dynaddtextfield',fieldName : field.fieldName,type:field.type});
            compo[1] = function(value)
            {
                return this.editor.getValue();
            };
        }
    }else{
        compo[0] = Ext.apply(cmpCfg, {xtype : 'textfield',control : this});
    }
    return compo;
};

 

转载于:https://www.cnblogs.com/xiari/p/3177456.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值