簡體   English   中英

根據數據庫選擇突出顯示/禁用ajax日歷控件中的特定日期

[英]Higlight/disable specific dates in ajax calendar control based on database selection

我需要使用 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 日歷控件中可用的 it day 渲染事件

<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 controlPopupControl Extender來做到這PopupControl Extender 您可以對Calendar control執行所有Calendar control ,它的作用類似於Calendar Extender 也檢查這個鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM