自定义日历控件

时间:2012-02-29 10:31:21

标签: asp.net calendar

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

是否可以使用asp.net日历控件?

2 个答案:

答案 0 :(得分:2)

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

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

请您澄清一下它应该从今天开始的意思吗?本月其余时间应该怎么办?

如果您希望灰显或禁用当月的其他日期,请加入OnDayRender事件,该事件将在每天呈现时运行,并且您可以访问日期和单元格,以便您可以执行类似的东西。

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

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

答案 1 :(得分:1)

您可以设置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. 禁用上个月浏览