Comment : répondre à la sélection de la date dans un contrôle serveur Web Calendar
Mise à jour : novembre 2007
Si la propriété Calendar du contrôle SelectionMode a une valeur autre que None, l'utilisateur peut sélectionner une journée ou une plage de dates. Vous pouvez connaître le choix de l'utilisateur et y répondre.
Pour répondre à la sélection d'une date
Créez une méthode pour l'événement Calendar du contrôle SelectionChanged portant la signature suivante :
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)
Remarque : L'événement n'est déclenché que si la sélection de date est modifiée par une action de l'utilisateur dans le contrôle. Par exemple, si l'utilisateur clique à deux reprises sur la même date, le deuxième clic ne déclenche pas d'événement. L'événement n'est pas déclenché non plus si vous définissez une plage de dates par programme.
Des informations sur la sélection de date sont disponibles dans les propriétés suivantes :
Propriété |
Description |
---|---|
Date unique. Si l'utilisateur a sélectionné une seule date, cette propriété contient la date en question. Si l'utilisateur a sélectionné plusieurs dates, cette propriété contient la première date de la plage concernée. |
|
Une collection contenant toutes les dates sélectionnées. Les dates de cette collection sont uniques et rangées par ordre. Étant donné que le contrôle Calendar ne permet pas à l'utilisateur de sélectionner plusieurs dates aléatoires, celles de la collection sont également séquentielles. |
Pour déterminer le nombre de dates sélectionnées
Récupérez la valeur de la propriété Count de la collection SelectedDates, comme le montre l'exemple suivant :
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); }
Si vous déterminez que l'utilisateur a sélectionné plusieurs dates, vous pouvez obtenir cette plage.
Pour récupérer la plage de date correspondant à une sélection de plusieurs dates
Récupérez le nombre de dates sélectionné à l'aide de la propriétéCount de la propriété SelectedDates.
Récupérez la première date de la collection, puis la dernière en extrayant la date correspondant à l'index moins un. L'exemple suivant affiche la première et la dernière date dans la page, à l'intérieur des contrôles de la zone de texte.
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(); } }
Pour récupérer l'intervalle de temps correspondant à une sélection de plusieurs dates
Créez un objet TimeSpan et affectez-lui comme valeur la différence entre la dernière et la première dates de la collection SelectedDates, puis récupérez la propriété TimeSpande l'objet Days.
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); }
Voir aussi
Tâches
Comment : sélectionner des dates par programme dans un contrôle serveur Web Calendar