2

我需要使用 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 日历控件中可用的一天渲染事件

4

3 回答 3

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 = “&lt;div>” +sender._days.all[day].innerText+ “&lt;/div>”;
                    }
            }
     }
}
</script>
于 2012-06-04T06:49:44.510 回答
-1

这是正确的,因为 e 属于 EventArgs 类型,女巫包含有关事件的信息。我不知道 PreRender-Event 中的实际类型,但您应该能够调试代码并且需要将 e 转换为实际类型才能访问属性“Day”。

于 2012-05-30T07:40:31.950 回答
-1

我认为您可以使用Calandar controland来做到这一点PopupControl Extender。你可以做你所做的一切Calendar control,它的行为就像Calendar Extender。也检查这个链接

于 2012-07-19T14:43:07.367 回答