【发布时间】:2012-11-30 17:08:47
【问题描述】:
我想自定义日历控件,使日历从当前日期开始。
例如。今天是 2 月 29 日,那么它应该在日历中显示 2 月 9 日的第一个日期。
可以用asp.net的日历控件吗?
【问题讨论】:
我想自定义日历控件,使日历从当前日期开始。
例如。今天是 2 月 29 日,那么它应该在日历中显示 2 月 9 日的第一个日期。
可以用asp.net的日历控件吗?
【问题讨论】:
默认情况下,<asp:Calendar /> 控件显示当前月份。
如果您愿意,可以使用 VisibleDate 属性覆盖它。
您能否澄清一下应该从今天开始的意思?这个月的其余日子应该怎么做?
如果您想灰显或禁用该月的其他日子,请连接到OnDayRender 事件,该事件将在每天呈现时运行,它使您可以访问日期和单元格,以便您可以执行类似的操作.
protected void Calendar1_OnDayRender(object sender, DayRenderEventArgs e) {
if(e.Day.Date < DateTime.Now) {
e.Cell.CssClass="disabled";
}
}
您需要了解的另一个属性是SelectedDate 属性。设置此项相当于单击该特定日期。
【讨论】:
您可以设置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;
}
}
这样你:
【讨论】: