Практическое руководство. Ответ на выбор даты в серверном веб-элементе управления 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)
Примечание.
Это событие вызывается только при изменении пользователем выбора даты в данном элементе управления. Например, если пользователь дважды щелкает одну и ту же дату, второе нажатие не вызывает событие. Это событие также не вызывается при программном задании диапазона дат.
Сведения о выборе даты доступны в следующих свойствах:
Свойство |
Описание |
---|---|
Одинарная дата. Если пользователь выбрал одинарную дату, это свойство содержит эту дату. Если пользователь выбрал несколько дат, это свойство содержит первую дату диапазона. |
|
Коллекция, содержащая все выбранные даты. Даты в данной коллекции упорядочены и уникальны. Поскольку элемент управления 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); }
Если известно, что пользователь выбрал несколько дат, можно получить диапазон.
Чтобы получить диапазон дат при множественном выборе дат:
Получите число выбранных дат с помощью свойства Count свойства SelectedDates.
Получите первую дату коллекции, а затем последнюю дату путем извлечения даты, на которую указывает свойство 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