0

画面にカレンダーを表示しています。カレンダーは、リスト「日記エントリ」に保存されている日付を強調表示します。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;
        }
4

1 に答える 1

0

矢印を無効にすることは(簡単に)可能だとは思いません。最も簡単なのは、DayRenderイベントを使用してIsSelectableプロパティを設定することです。

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;
    // adjust accordingly
    if (e.Day.Date < MinDate || e.Day.Date > MaxDate)
    {
        e.Day.IsSelectable = false;
        e.Cell.BackColor = Color.LightGray;
    }
}
于 2013-04-26T14:30:13.020 に答える