Como: Responder a data seleção in um calendário controle de servidor Web
Se o controle Calendar da propriedade SelectionMode for definida como algo diferente None, o usuário pode selecionar um dia ou um intervalo de datas.Você pode detectar e responder à escolha do usuário.
Para responder a uma seleção de data
Crie um método para o controle Calendar do evento SelectionChanged com a assinatura a seguir:
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)
Observação:
O evento é disparado somente se a seleção de data for alterada por ação do usuário no controle.Por exemplo, se o usuário clica duas vezes na mesma data, o segundo clique não dispara um evento.O evento também não é disparado se você definir um intervalo de datas programaticamente.
Informações sobre seleção de data está disponível nessas propriedades:
Propriedade |
Descrição |
---|---|
Uma única data.Se o usuário tiver selecionado uma única data, esta propriedade contém esta data.Se o usuário tiver selecionado várias datas, esta propriedade contém a primeira data dentro do intervalo. |
|
Uma coleção contendo todas as datas selecionadas.As datas nessa coleção são ordenadas e exclusivas.Devido ao fato de o controle Calendar não permitir ao usuário selecionar várias datas individuais, as datas na coleção são também sequenciais. |
Para determinar quantas datas essão selecionados
Obtenha o valor da propriedade Count da coleção SelectedDates, conforme mostrado no exemplo a seguir.
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); }
Se você tiver determinado que o usuário selecionou várias datas, você pode obter o intervalo.
Para obter o intervalo de datas de uma seleção de várias datas
Obter a contagem de datas selecionadas usando a propriedade Count da propriedade SelectedDates.
Obtenha a primeira data na coleção, e depois obtenha a última data, extraindo a data no índice da contagem menos um.O exemplo a seguir exibe a primeira e a última data em controles caixa de texto na página.
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(); } }
Para obter a duração de tempo de uma seleção de várias datas
Crie um objeto TimeSpan e defini-o como a diferença entre a última e primeira data na coleção SelectedDates e em seguida, obtenha a propriedade Days do objeto 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); }
Consulte também
Tarefas
Como: Selecionar datas por programação em um controle calendário do servidor Web