Procedura: rispondere alla selezione della data in un controllo server Web Calendar
Aggiornamento: novembre 2007
Se la proprietà SelectionMode del controllo Calendar è impostata su un valore diverso da None, l'utente potrà selezionare un giorno o un intervallo di date. È possibile rilevare la scelta dell'utente e rispondere di conseguenza.
Per rispondere alla selezione di una data
Creare un metodo per l'evento SelectionChanged del controllo Calendar con la firma seguente:
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)
Nota: L'evento viene generato solo se la selezione della data viene modificata dall'azione dell'utente nel controllo. Se, ad esempio, l'utente fa clic due volte sulla stessa data, il secondo clic non genera un evento. L'evento non viene generato neanche se si imposta un intervallo di date a livello di codice.
Le informazioni sulla selezione della data sono disponibili nelle seguenti proprietà.
Proprietà |
Descrizione |
---|---|
Una singola data. Se l'utente ha selezionato una singola data, questa proprietà la contiene. Se l'utente ha selezionato più date, questa proprietà contiene la prima data dell'intervallo. |
|
Un insieme contenente tutte le date selezionate, che sono ordinate e univoche. Poiché il controllo Calendar non consente la selezione di più date singole da parte dell'utente, le date dell'insieme sono sequenziali. |
Per determinare quante date vengono selezionate
Ottenere il valore della proprietà Count dell'insieme SelectedDates, come mostrato nell'esempio seguente.
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 l'utente ha selezionato più date, è possibile ottenerne l'intervallo.
Per ottenere l'intervallo di date di una selezione di più date
Per ottenere il conteggio delle date selezionate, utilizzare la proprietà Count della proprietà SelectedDates.
Ottenere la prima data nell'insieme, quindi l'ultima, estraendola dall'indice del conteggio meno uno. Nell'esempio seguente la prima e l'ultima data vengono visualizzate nei controlli casella di testo presenti nella pagina.
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(); } }
Per ottenere l'intervallo di tempo di una selezione di più date
Creare un oggetto TimeSpan e impostarne il valore sulla differenza tra la prima e l'ultima data nell'insieme SelectedDates, quindi ottenere la proprietà Days dell'oggetto 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); }
Vedere anche
Attività
Procedura: selezionare le date a livello di codice in un controllo server Web Calendar