我需要使用ajax日历控件来显示当前日期的日期,并禁用和突出显示数据库表中存储的日期。
我可以禁用以前的日期并将选择范围限制为当前日期后一个月,还可以突出显示已在 ASP.NET 日历控件中预订活动的日期,但不在 Ajax 日历控件中。
以下代码在 ajaxcalander 控件中生成错误:
protected void AjaxCalendar_PreRender(object sender, EventArgs e)
{
//startdate= enddate="2012-06-25"
DateTime startDate = Helper.GetUAEDateTime();
DateTime endDate = DateTime.Now.AddDays(10);
AjaxCalendar.StartDate = startDate;
AjaxCalendar.EndDate = endDate;
// If the month is CurrentMonth
if (!e.Day.IsOtherMonth)
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
if ((dr["BookingDate"].ToString() != DBNull.Value.ToString()))
{
DateTime dtEvent = (DateTime)dr["BookingDate"];
if (dtEvent.Equals(e.Day.Date))
{
e.Cell.BackColor = Color.PaleVioletRed;
e.Day.IsSelectable = false;
}
}
}
}
//If the month is not CurrentMonth then hide the Dates
else
{
e.Cell.Text = "";
}
}
}
以下代码生成错误
if (!e.Day.IsOtherMonth)
CS1061:“System.EventArgs”不包含“Day”的定义,并且找不到接受“System.EventArgs”类型的第一个参数的扩展方法“Day”(您是否缺少 using 指令或程序集引用? )
HTML
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:CalendarExtender ID="AjaxCalendar" runat="server"
TargetControlID="TextBox2" Format="yyyy-MM-dd"
onprerender="AjaxCalendar_PreRender" >
</asp:CalendarExtender>
如果我将相同的代码块放入 ASP.NET 日历控件中,它就可以正常工作
我花了几个小时寻找可以帮助我解决此问题的解决方案或代码示例,但没有成功。如果有任何帮助,我将不胜感激。
我已经看过 100 个示例,但大多数都显示使用 JavaScript 阻止了旧日期或周末,但我想使用后面的代码来实现它。 ajax 日历控件中可用的当天渲染事件
<AjaxControl:CalendarExtender ID ="myCalendar" runat=”server” TargetControlID=”txtDateTime” OnClientShown="disablenonthursdays">
</AjaxControl:CalendarExtender>
<script language="javascript">
function disablenonthursdays(sender, args)
{
for(var day =0; day <sender._days.all.length; day++)
{
for(var weekday =0; weekday < 6; weekday++)
{
if(sender._days.all[day].id != “calendarValidToDate_day_”+ weekday +”_4″)
{
sender._days.all[day].disabled = true;
sender._days.all[day].innerHTML = “<div>” +sender._days.all[day].innerText+ “</div>”;
}
}
}
}
</script>
这是正确的,因为 e 是 EventArgs 类型,其中包含有关事件的信息。 我不知道 PreRender-Event 中的实际类型,但您应该能够调试代码,并且需要将 e 转换为实际类型以访问属性“Day”。
我认为您可以使用
Calandar control
和 PopupControl Extender
来做到这一点。您可以对 Calendar control
做所有的事情,就像 Calendar Extender
一样。也请检查此链接。