2

Asp.Net でカレンダー コントロールを使用しています。実装したい条件は、「ユーザーが週から特定の曜日を選択した場合、別の週から他の日付を選択できないようにする」ことです。同様に、すべての選択は 1 週間以内に行う必要があります。しかし、選択した日付の週以外の残りの週を無効にする方法がわかりません。

4

1 に答える 1

0

選択した日付が変更されると、その特定の週の開始と終了を取得します。次に、各日がレンダリングされるときに、その日がその週の範囲内にあることを確認します。

private DateTime? _firstDayOfWeek;
private DateTime? _lastDayOfWeek;

protected void yourCalendar_SelectionChanged(object sender, EventArgs e)
{
    var selectedDate = yourCalendar.SelectedDate;

    DayOfWeek firstDay = CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek;

    _firstDayOfWeek = selectedDate.Date;
    while (_firstDayOfWeek.Value.DayOfWeek != firstDay)
        _firstDayOfWeek = _firstDayOfWeek.Value.AddDays(-1);

    _lastDayOfWeek = selectedDate.Date;
    while (_lastDayOfWeek.Value.DayOfWeek != _firstDayOfWeek.Value.AddDays(6).DayOfWeek)
        _lastDayOfWeek = _lastDayOfWeek.Value.AddDays(1);
}

protected void yourCalendar_DayRender(object sender, DayRenderEventArgs e)
{
    if (_firstDayOfWeek.HasValue && _lastDayOfWeek.HasValue)
    {
        // There are dates to work with now, so check to see if the day falls
        // outside of the week range...
        if (e.Day.Date.Ticks < _firstDayOfWeek.Value.Ticks || e.Day.Date.Ticks > _lastDayOfWeek.Value.Ticks)
            e.Day.IsSelectable = false;
    }
}
于 2012-08-09T05:09:03.193 に答える