現在の日付から日付を表示し、データベーステーブルに保存されている日付を無効にして強調表示するには、ajax カレンダーコントロールを使用する必要があります。
以前の日付を無効にして、選択を現在の日付から 1 か月に制限することができます。また、Ajax カレンダー コントロールではなく、asp.net カレンダー コントロールでイベント用に既に予約されている日付を強調表示します。
次のコードは、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 カレンダー コントロールで利用可能な日レンダリング イベント