【问题标题】:Customize Calendar control自定义日历控件
【发布时间】:2012-11-30 17:08:47
【问题描述】:

我想自定义日历控件,使日历从当前日期开始。
例如。今天是 2 月 29 日,那么它应该在日历中显示 2 月 9 日的第一个日期。

可以用asp.net的日历控件吗?

【问题讨论】:

    标签: asp.net calendar


    【解决方案1】:

    默认情况下,<asp:Calendar /> 控件显示当前月份。

    如果您愿意,可以使用 VisibleDate 属性覆盖它。

    您能否澄清一下应该从今天开始的意思?这个月的其余日子应该怎么做?

    如果您想灰显或禁用该月的其他日子,请连接到OnDayRender 事件,该事件将在每天呈现时运行,它使您可以访问日期和单元格,以便您可以执行类似的操作.

    protected void Calendar1_OnDayRender(object sender, DayRenderEventArgs e) {
        if(e.Day.Date < DateTime.Now) {
            e.Cell.CssClass="disabled";
        }
    }
    

    您需要了解的另一个属性是SelectedDate 属性。设置此项相当于单击该特定日期。

    【讨论】:

    • 可以使用可见属性。但我希望我们的日历从当前日期开始,它也包括下个月的所有日期。
    【解决方案2】:

    您可以设置SelectedDate 属性。假设您的日历名称是 MyCal,您可以这样设置第一个月的日期:

    myCal.SelectedDate = New Date(DateTime.Now.Year, DateTime.Now.Month, 1)
    

    附录

    试试这个代码:

    protected void Page_Load(object sender, EventArgs e)
    {
        MyCal.SelectedDate = DateTime.Now.Date;
    }
    
    protected void MyCal_DayRender(object sender, DayRenderEventArgs e)
    {
        if (e.Day.Date < DateTime.Now.Date)
        {
            e.Cell.Visible = false;
        }
    }
    
    protected void MyCal_VisibleMonthChanged(object sender, MonthChangedEventArgs e)
    {
        if (e.NewDate.Month == DateTime.Now.Date.Month - 1) 
        {
             MyCal.SelectedDate = e.PreviousDate;
             MyCal.VisibleDate = e.PreviousDate;
        }
    }
    

    这样你:

    1. 设置当前日期
    2. 隐藏前一天
    3. 禁用上个月浏览

    【讨论】:

    • 我想从当前日期开始我的日历网格。的所有过去日期不应显示在当前日期网格的月份中,但下个月的日期应显示在当前日期网格中
    • 请放弃我们的工资!:您的反馈
    • 我们在这里帮助和学习。遵循 stackoverflow 规则来改进这个现有的网站。 stackoverflow.com/faq
    猜你喜欢
    • 2011-02-06
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多