Partager via


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

SelectedDate

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.

SelectedDates

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

  1. Récupérez le nombre de dates sélectionné à l'aide de la propriétéCount de la propriété SelectedDates.

  2. 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

Concepts

Vue d'ensemble du contrôle serveur Web Calendar