画面にカレンダーを表示しています。カレンダーは、リスト「日記エントリ」に保存されている日付を強調表示します。ATM ユーザーは、カレンダーの上部にある矢印を使用して、任意の年の任意の月をナビゲートできます。ユーザーが日付を保存する月間を移動できるようにしたいだけなので、たとえば、日付が btn 1/3/2013 & 4/7/2013 の場合、ユーザーはカレンダーを 5/8/2013 に移動できません。日付にヒットしたときに矢印キーを無効にすることは可能ですか?
<asp:Calendar ID="calendarToDisplayWorkSiteDates" VerticalAlign="top" HorizontalAlign="left" runat="server" OnSelectionChanged="LoadRequestedDate_OnClick" OnDayRender="cal_DayRender"></asp:Calendar>
public void BindData()
{
DateTime Date = new DateTime(DiaryDate.Year, DiaryDate.Month, 1);
DateTime startOfMonth = Date.AddMonths(-2);
DateTime endOfMonth = startOfMonth.AddMonths(5).AddDays(-1);
int siteId = this.siteId;
ClarkeDBDataContext db = new ClarkeDBDataContext();
List<Diary_Entry> DiaryEntry = new List<Diary_Entry>();
DiaryEntry = (from DE in db.Diary_Entries
where DE.Site_Id == siteId
&& DE.Date >= startOfMonth && DE.Date <= endOfMonth
orderby DE.Date ascending
select DE).ToList();
if (DiaryEntry != null)
{
FirstDateLabel.Text = DiaryEntry.FirstOrDefault().Date.Date.ToShortDateString();
SecondDateLabel.Text = DiaryEntry.LastOrDefault().Date.Date.ToShortDateString();
foreach (DateTime d in DiaryEntry.Select(de => de.Date))
{
calendarToDisplayWorkSiteDates.SelectedDates.Add(d);
}
}
else
{
FirstDateLabel.Text = "None";
SecondDateLabel.Text = "None";
}
}
protected void cal_DayRender(object sender, DayRenderEventArgs e)
{
if (e.Day.IsToday)
e.Cell.BackColor = Color.Red;
else if (e.Day.Date == this.DiaryDate)
e.Cell.BackColor = Color.Green;
else if (e.Day.IsSelected)
e.Cell.BackColor = Color.Blue;
}