Поделиться через


Практическое руководство. Ответ на выбор даты в серверном веб-элементе управления Calendar

Обновлен: Ноябрь 2007

Если свойство SelectionMode элемента управления Calendar установлено в значение, отличное от None, пользователь может выбрать день или диапазон дат. Также можно распознать выбор пользователя и ответить на него.

Чтобы ответить на выбор даты

  • Создайте для события SelectionChanged элемента управления Calendar метод со следующей подписью:

    Private Sub Calendar1_SelectionChanged(ByVal sender _
        As System.Object, ByVal e As System.EventArgs) _
        Handles Calendar1.SelectionChanged
    
    private void Calendar1_SelectionChanged (object sender, 
        System.EventArgs e)
    
    wfasf5wy.alert_note(ru-ru,VS.90).gifПримечание.

    Это событие вызывается только при изменении пользователем выбора даты в данном элементе управления. Например, если пользователь дважды щелкает одну и ту же дату, второе нажатие не вызывает событие. Это событие также не вызывается при программном задании диапазона дат.

Сведения о выборе даты доступны в следующих свойствах:

Свойство

Описание

SelectedDate

Одинарная дата. Если пользователь выбрал одинарную дату, это свойство содержит эту дату. Если пользователь выбрал несколько дат, это свойство содержит первую дату диапазона.

SelectedDates

Коллекция, содержащая все выбранные даты. Даты в данной коллекции упорядочены и уникальны. Поскольку элемент управления Calendar не разрешает выбор нескольких отдельных дат, даты в этой коллекции также расположены последовательно.

Чтобы определить количество выбранных дат:

  • Получите значение свойства Count из коллекции SelectedDates, как показано в следующем примере:

    Public Sub Calendar1_SelectionChanged(ByVal sender As Object, _
       ByVal e As System.EventArgs) _
       Handles Calendar1.SelectionChanged
    
       Text1.Text = "You selected " _
          & Calendar1.SelectedDates.Count.ToString() _
          & " date(s)."
    End Sub
    
    private void Calendar1_SelectionChanged (object sender, System.EventArgs e)
    {
       Text1.Text = String.Format("You selected {0} date(s).",
          Calendar1.SelectedDates.Count);
    }   
    

Если известно, что пользователь выбрал несколько дат, можно получить диапазон.

Чтобы получить диапазон дат при множественном выборе дат:

  1. Получите число выбранных дат с помощью свойства Count свойства SelectedDates.

  2. Получите первую дату коллекции, а затем последнюю дату путем извлечения даты, на которую указывает свойство Count, минус один. В следующем примере показана первая и последняя дата в элементе управления «текстовое поле» на странице:

    Public Sub Calendar1_SelectionChanged(ByVal sender As Object, _
       ByVal e As System.EventArgs) _
       Handles Calendar1.SelectionChanged
    
       With Calendar1.SelectedDates
          If .Count > 1 Then
             Dim firstDate As Date = .Item(0).Date
             Dim lastDate As Date = .Item(.Count - 1).Date
             TextBox1.Text = firstDate.ToString()
             TextBox2.Text = lastDate.ToString()
          End If
       End With
    End Sub
    
    private void Calendar1_SelectionChanged (object sender,
       System.EventArgs e)
    {
       SelectedDatesCollection theDates = Calendar1.SelectedDates;
       if (theDates.Count > 1) 
       {
          DateTime firstDate = theDates[0];
          DateTime lastDate = theDates[theDates.Count-1];
          TextBox1.Text = firstDate.ToString();
          TextBox2.Text = lastDate.ToString();
       }
    }
    

Чтобы получить интервал времени при множественном выборе дат:

  • Создайте объект TimeSpan и задайте для него значение разницы между первой и последней датой в коллекции SelectedDates. Затем получите свойство Days объекта TimeSpan.

    Public Sub Calendar1_SelectionChanged(ByVal sender As Object, _
       ByVal e As System.EventArgs) Handles Calendar1.SelectionChanged
       With Calendar1.SelectedDates
          Dim days As Integer
          Dim firstDate As Date = .Item(0).Date
          Dim lastDate As Date = .Item(.Count - 1).Date
          ' The Subtract method returns a TimeSpan object.
          days = lastDate.Subtract(firstDate).Days + 1
          TextBox1.Text = "You have selected " & days.ToString() & " day(s)."
       End With
    End Sub
    
    private void Calendar1_SelectionChanged (object sender,
       System.EventArgs e)
    {
       SelectedDatesCollection theDates = Calendar1.SelectedDates;
       TimeSpan timeSpan = theDates[theDates.Count-1] - theDates[0];
       TextBox1.Text = 
          String.Format("You have selected {0} day(s).", timeSpan.Days + 1);
    }   
    

См. также

Задачи

Практическое руководство. Программный выбор дат в серверном веб-элементе управления Calendar

Основные понятия

Общие сведения о серверном веб-элементе управления Calendar