Gewusst wie: Reagieren auf eine Datumsauswahl in einem Calendar-Webserversteuerelement
Aktualisiert: November 2007
Wenn die SelectionMode-Eigenschaft des Calendar-Steuerelements nicht auf None festgelegt ist, kann der Benutzer einen Tag oder einen Datumsbereich auswählen. Nachdem die Benutzerauswahl ermittelt wurde, kann darauf reagiert werden.
So reagieren Sie auf eine Datumsauswahl
Erstellen Sie eine Methode für das SelectionChanged-Ereignis des Calendar-Steuerelements mit folgender Signatur:
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)
Hinweis:
Das Ereignis wird nur dann ausgelöst, wenn die Datumsauswahl durch eine Benutzeraktion im Steuerelement geändert wird. Wenn ein Benutzer z. B. zweimal auf das gleiche Datum klickt, wird vom zweiten Klicken kein Ereignis ausgelöst. Das Ereignis wird auch dann nicht ausgelöst, wenn ein Datumsbereich programmgesteuert festgelegt wird.
Informationen über die Datumsauswahl sind in folgenden Eigenschaften verfügbar:
Eigenschaft |
Beschreibung |
---|---|
Ein einzelnes Datum. Wenn der Benutzer ein einzelnes Datum ausgewählt hat, enthält diese Eigenschaft das Datum. Wenn der Benutzer einen Datumsbereich ausgewählt hat, enthält diese Eigenschaft das erste Datum des Bereichs. |
|
Eine Auflistung, in der alle ausgewählten Datumsangaben enthalten sind. Die Datumsangaben in dieser Sammlung sind geordnet und eindeutig. Da das Calendar-Steuerelement dem Benutzer nicht die Auswahl mehrerer einzelner Datumsangaben gestattet, enthält die Auflistung die Datumsangaben in sequenzieller Form. |
So bestimmen Sie, wie viele Datumsangaben ausgewählt wurden
Rufen Sie den Wert der Count-Eigenschaft der SelectedDates-Auflistung ab wie im folgenden Beispiel gezeigt:
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); }
Wenn festgestellt worden ist, dass der Benutzer mehrere Datumsangaben ausgewählt hat, kann der Bereich abgerufen werden.
So rufen Sie den Datumsbereich ab, wenn mehrere Datumsangaben ausgewählt wurden
Rufen Sie die Anzahl der ausgewählten Datumsangaben mit der Count-Eigenschaft der SelectedDates-Eigenschaft ab.
Rufen Sie das erste Datum in der Auflistung ab, und rufen Sie anschließend das letzte Datum ab, indem Sie das Datum am Index Anzahl minus eins abrufen. Das folgende Beispiel zeigt das erste und das letzte Datum in Textfeldsteuerelementen auf der Seite an.
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(); } }
So rufen Sie den Zeitraum für eine Auswahl mehrerer Datumsangaben ab
Erstellen Sie ein TimeSpan-Objekt, und legen Sie es auf die Differenz zwischen der letzten und der ersten Datumsangabe in der SelectedDates-Auflistung fest. Rufen Sie anschließend die Days-Eigenschaft des TimeSpan-Objekts ab.
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); }
Siehe auch
Aufgaben
Gewusst wie: Programmgesteuerte Datumsauswahl in einem Calendar-Webserversteuerelement