Comment : contrôler la navigation entre les mois dans un contrôle serveur Web Calendar
Mise à jour : novembre 2007
Par défaut, le calendrier affiche le mois contenant la date du jour. Les utilisateurs peuvent passer d'un mois à un autre dans le contrôle Calendar en cliquant sur les liens de navigation entre les mois dans la barre de titre du calendrier. Vous pouvez choisir de permettre ou non à l'utilisateur de cliquer sur ces liens.
Vous pouvez également naviguer par programme, ce qui est utile si vous voulez fournir aux utilisateurs une méthode alternative d'affichage d'un mois particulier. Enfin, vous pouvez répondre à un événement déclenché pendant que l'utilisateur naviguait.
Pour activer ou désactiver la navigation mensuelle
Affectez à la propriété ShowNextPrevMonth du contrôle Calendar la valeur true ou false. Si la propriété a la valeur false, le contrôle n'affiche pas dans le titre les contrôles LinkButton qui permettent à l'utilisateur de se déplacer de mois en mois.
Conseil : Vous pouvez modifier l'aspect des liens hypertexte de navigation entre les mois en définissant les propriétés NextMonthText, PrevMonthText, NextPrevFormat et NextPrevStyle.
Pour définir par programme la navigation mensuelle
Définissez la propriété VisibleDate du contrôle en indiquant la date du mois à afficher. Cette date peut correspondre à n'importe quel jour du mois mais, en général, c'est le premier jour du mois qui est retenu. Si la propriété VisibleDate est vide (sa valeur est DateTime.Empty), le mois en cours visible est dérivé de la valeur de la propriété TodaysDate.
Dans l'exemple suivant, la navigation aboutit au mois de février 2000 :
Calendar1.VisibleDate = New Date(2000, 2, 1)
Calendar1.VisibleDate = new DateTime(2000, 2, 1);
La modification de la propriété VisibleDate n'a aucun effet sur les valeurs des propriétés TodaysDate, SelectedDayStyle ou SelectedDates.
Si la navigation mensuelle est activée, le contrôle déclenche un événement lorsque l'utilisateur passe à un autre mois. Vous pouvez gérer cet événement afin de remplacer ou de modifier la navigation mensuelle par défaut. Par exemple, si vous utilisez deux contrôles Calendar dans une page de planification d'un voyage, vous pouvez empêcher l'utilisateur de choisir une date de départ postérieure à la date d'arrivée.
Pour répondre à un événement de navigation mensuelle
Créez une méthode pour l'événement VisibleMonthChanged du contrôle. Lorsque cet événement est déclenché, le contrôle a déjà modifié la propriété VisibleMonth d'un rang.
L'événement VisibleMonthChanged accepte un argument unique de type MonthChangedEventArgs. Vous pouvez utiliser les propriétés suivantes de cet argument pour déterminer ou substituer l'action effectuée par l'utilisateur :
Propriété
Description
La valeur du mois qui était affichée avant que l'utilisateur ne clique sur le bouton de navigation mensuelle. Vous pouvez comparer la valeur de cette propriété à celle de la propriété VisibleMonth du contrôle pour déterminer la direction de navigation. Pour annuler l'effet du clic de l'utilisateur, affectez cette valeur à la propriété VisibleDate du contrôle.
La valeur du mois jusqu'auquel l'utilisateur a navigué. La propriété VisibleDate est mise à jour pour prendre cette valeur avant que l'événement VisibleMonthChanged soit déclenché.
Public Sub Calendar1_VisibleMonthChanged(ByVal sender As Object, _ ByVal e As System.Web.UI.WebControls.MonthChangedEventArgs) _ Handles Calendar1.VisibleMonthChanged ' Select the 10th and 25th of each month. Calendar1.SelectedDates.Clear() Calendar1.SelectedDates.Add(New DateTime(e.NewDate.Year, e.NewDate.Month, 10)) Calendar1.SelectedDates.Add(New DateTime(e.NewDate.Year, e.NewDate.Month, 25)) End Sub
private void Calendar1_VisibleMonthChanged (object sender, System.Web.UI.WebControls.MonthChangedEventArgs e) { // Select the 10th and 25th of each month. Calendar1.SelectedDates.Clear(); Calendar1.SelectedDates.Add(new DateTime(e.NewDate.Year, e.NewDate.Month, 10)); Calendar1.SelectedDates.Add(new DateTime(e.NewDate.Year, e.NewDate.Month, 25)); }