dontide
2009-08-19 09:43 阅读 383

Ext 时间控件 选择时间 设置时间格式

以下是一个原问题:

我有这样一个需求,就是报表类型分为日报和周报,现在我想解决的是一个周报的问题,因为周报的时间为一整周一整周的,所以在想在datefield时间控件内设置格式为只能选择周,如
[img]http://www.iteye.com/upload/attachment/136722/ff6daf1b-ef38-3cb8-af14-e1a8ad54f5ef.jpg
[/img]

我想打开这个控件后就只有最左边的周日和最后边的周六能够选择,其余的都处于不可选状态,就是灰色的。

以下是一个新问题

上面那个原问题已经解决了,可以选择周了,但我现在想动态的去改变,有两个单选按钮,一个是周,一个是日。如果选择周,那就是上午的问题那样显示。如果选择日,就是控件初始化时的情况,两个单选按钮来控制日期控件的显示形式进行来回切换,以下是我做的方法,但这样不行。请问有办法做到这一点吗?
[code="java"]
var _form = new Ext.FormPanel({

labelWidth : 70,

frame : true,

height : 150,

width : 248,

bodyStyle : 'padding:5px 2px 0',

items : [{

xtype : 'fieldset',

title : '查询条件',

collapsible : true,

width : 232,

autoHeight : true,

items : [{

layout : 'column',

items : [{

columnWidth : 1,

height : 20,

width : 200,

text : '工作时段用能比例:',

xtype : 'label',

anchor : '100%'

}, {

columnWidth : .4,

layout : 'form',

hideLabels : true,

items : [new Ext.form.Radio({

boxLabel : '工作周',

name : 'analysis_type',

inputValue : 1,

checked : true,

listeners : {

'check' : sel_date

}

})]

}, {

columnWidth : .6,

layout : 'form',

hideLabels : true,

items : [new Ext.form.Radio({

boxLabel : '工作日',

name : 'analysis_type',

inputValue : 2,

checked : false,

listeners : {

'check' : sel_date

}

})]

}, {

columnWidth : 1,

layout : 'form',

items : [{

fieldLabel : '开始时间',

readOnly : true,

name : 'startTime',

id : 'startTime',

xtype : 'datefield',

format : 'Y-m-d',

anchor : '90%'

}]

}, {

columnWidth : 1,

layout : 'form',

items : [{

fieldLabel : '结束时间',

readOnly : true,

name : 'endTime',

id : 'endTime',

xtype : 'datefield',

format : 'Y-m-d',

anchor : '90%'

}]

}]

}]

}]

});

function sel_date(node, checked){

if(checked){

var st = _form.findById("startTime");

var et = _form.findById("endTime");

if(node.getRawValue() == 1){

st.disabledDays = [2, 3, 4, 5, 6];

et.disabledDays = [2, 3, 4, 5, 6];

}else if(node.getRawValue() == 2){

st.disabledDays = [];

et.disabledDays = [];

}

}

}

[/code]

还有改成下面这样好像也不行
[code="java"]
function sel_date(node, checked){

if(checked){

var st = _form.findById("startTime");

var et = _form.findById("endTime");

if(node.getRawValue() == 1){

st.setDisabledDays([2, 3, 4, 5, 6]);
et.setDisabledDays([2, 3, 4, 5, 6]);
}else if(node.getRawValue() == 2){

st.setDisabledDays();
et.setDisabledDays();
}

}

}
[/code]

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    iteye_10013 iteye_10013 2009-08-19 10:01

    我本地测试,可行,用

    [code="java"] function sel_date(node, checked){

    if(checked){

    var st = _form.findById("startTime");

    var et = _form.findById("endTime");

    if(node.getRawValue() == 1){

    st.setDisabledDays([2, 3, 4, 5, 6]);

    et.setDisabledDays([2, 3, 4, 5, 6]);

    }else if(node.getRawValue() == 2){
    st.setDisabledDays([]);

    et.setDisabledDays([]);
    }

    }

    } [/code]

    不能直接设置那个值的,因为源码如下:

    [code="java"] /* Replaces any existing disabled days (by index, 0-6) with new values and refreshes the DatePicker.
    * @param {Array} disabledDays An array of disabled day indexes. See the {@link #disabledDays}
    * config for details on supported values.
    */
    setDisabledDays : function(dd){
    this.disabledDays = dd;
    if(this.menu){
    this.menu.picker.setDisabledDays(dd);
    }
    }[/code]

    点赞 评论 复制链接分享

相关推荐