我需要使用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日历控件中可用
答案 0 :(得分:0)
<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>
答案 1 :(得分:-1)
这是正确的,因为e类型为EventArgs,其中包含有关该事件的信息。 我不知道PreRender-Event中的实际类型,但您应该能够调试代码并需要将e转换为实际类型以访问属性'Day'。
答案 2 :(得分:-1)
我认为你可以使用Calandar control
和PopupControl Extender
来做到这一点。您可以对Calendar control
执行所有操作,其行为类似于Calendar Extender
。同时检查this link。