3

我希望用户 aDateChooser允许用户选择给定月份和年份中的日期。我想以编程方式设置月份和年份,并且只允许用户选择日期/日期。

我可以通过将 minYear 和 maxYear 设置为我想要的任何年份来轻松完成这一年,但我没有看到不允许用户选择不同月份的严格方法?

4

4 回答 4

2

这是您禁用月份选择箭头的方法……一个完整的 CSS hack!

nextMonthUpSkin: ClassReference('mx.skins.Border');
nextMonthDisabledSkin: ClassReference('mx.skins.Border');
nextMonthDownSkin: ClassReference('mx.skins.Border');
nextMonthOverSkin: ClassReference('mx.skins.Border');
prevMonthUpSkin: ClassReference('mx.skins.Border');
prevMonthDisabledSkin: ClassReference('mx.skins.Border');
prevMonthDownSkin: ClassReference('mx.skins.Border');
prevMonthOverSkin: ClassReference('mx.skins.Border');   

对于八月份没有看到这个问题,我深表歉意。但是我最近(昨天)遇到了同样的问题并找到了这个解决方案......干杯。

于 2010-09-23T19:55:28.473 回答
2

正如JabbyPanda所提到的,您可以扩展 DateChooser 控件。只需很少的额外工作,您就可以获得一个理想且更可重用的实现,但让我们在这里坚持简单。因此,您需要做的就是同时删除fwdMonthButtonand backMonthButton,或者通过将 visible 属性设置为 false 来隐藏它们。例如:

import mx.controls.DateChooser;
import mx.core.mx_internal;
use namespace mx_internal;

public class MyDateChooser extends DateChooser
{
    override protected function createChildren():void {
        super.createChildren();
        // Remove them:
        this.removeChild(this.mx_internal::fwdMonthButton);
        this.removeChild(this.mx_internal::backMonthButton);
        // Or just hide them:
        //this.mx_internal::fwdMonthButton.visible = false; 
        //this.mx_internal::backMonthButton.visible = false;    
    }
}
于 2011-02-24T14:18:22.993 回答
1

您还可以使用selectableRange属性并适当地设置rangeStartrangeEnd。仅允许用户从 2010 年 8 月 1 日到 2010 年 8 月 15 日进行选择的示例:

selectableRange="{{rangeStart:new Date(2010,7,1), rangeEnd:new Date(2010,7,15)}}"

但是,请注意它仍会显示月份导航箭头(尽管它们已被禁用)。我不确定是否有一种简单的方法可以隐藏它们。

于 2010-08-02T16:18:14.603 回答
1

开箱即用的 mx:DateChooser 仅允许通过公共属性“yearNavigationEnabled”禁用年份导航

如果您也想禁用月份导航,则必须从标准 DateChooser 组件扩展并实现类似于现有“yearNavigationEnabled”的“monthNavigationEnabled”功能

于 2010-08-03T13:29:44.703 回答