Ext.ux.form.field.DateTime问题

时间:2011-05-23 01:55:53

标签: extjs extjs4

我创建了一个Ext.ux.form.field.DateTime插件,但这里有一些问题:

  1. 如果我没有设置宽度/高度,则缺少工具栏中的DateTime
  2. 无法在RowEditing插件中显示正确的宽度
  3. enter image description here

    Ext.define('Ext.ux.form.field.DateTime', {
        extend:'Ext.form.FieldContainer',
        mixins: {
            field: 'Ext.form.field.Field'
        },
        alias: 'widget.datetimefield',
        layout: 'hbox',
        width: 200,
        height: 22,
        combineErrors: true,
        msgTarget :'side',
    
        dateCfg:{},
        timeCfg:{},
    
        initComponent: function() {
            var me = this;
            me.buildField();
            me.callParent();
            this.dateField = this.down('datefield')
            this.timeField = this.down('timefield')
            me.initField();
        },
    
        //@private
        buildField: function(){
            this.items = [
                Ext.apply({
                    xtype: 'datefield',
                    format: 'Y-m-d',
                    width: 100
                },this.dateCfg),
                Ext.apply({
                    xtype: 'timefield',
                    format: 'H:i',
                    width: 80
                },this.timeCfg)
            ]
        },
    
        getValue: function() {
            var value,date = this.dateField.getSubmitValue(),time = this.timeField.getSubmitValue();
            if(date){
                if(time){
                    var format = this.getFormat()
                    value = Ext.Date.parse(date + ' ' + time,format)
                }else{
                    value = this.dateField.getValue()
                }
            }
            return value
        },
    
        setValue: function(value){
            this.dateField.setValue(value)
            this.timeField.setValue(value)
        },
    
        getSubmitData: function(){
            var value = this.getValue()
            var format = this.getFormat()
            return value ? Ext.Date.format(value, format) : null;
        },
    
        getFormat: function(){
            return (this.dateField.submitFormat || this.dateField.format) + " " + (this.timeField.submitFormat || this.timeField.format)
        }
    })
    

1 个答案:

答案 0 :(得分:6)

您可以使用flex

        Ext.apply({
            xtype: 'datefield',
            format: 'Y-m-d',
            width: 100,
            flex: 2
        },this.dateCfg),
        Ext.apply({
            xtype: 'timefield',
            format: 'H:i',
            width: 80,
            flex: 1
        },this.timeCfg)