Partager via


Comment : personnaliser des journées dans un contrôle serveur Web Calendar

Mise à jour : novembre 2007

Par défaut, les jours sont affichés sous forme de nombres dans le contrôle Calendar. Si la sélection du jour est activée, ces nombres s'affichent sous forme de liens. Pour plus d'informations, consultez Comment : contrôler la sélection de la date par l'utilisateur dans un contrôle serveur Web Calendar.

Vous pouvez personnaliser l'apparence et le contenu de journées individuelles, ce qui vous permet de :

  • mettre en évidence par programme certains jours, par exemple, en affichant dans une couleur différente les jours fériés ;

  • spécifier par programme si un jour particulier peut être ou non sélectionné ;

  • ajouter des informations dans l'affichage d'une journée (par exemple, un rendez-vous ou des informations relatives à un événement).

  • personnaliser le texte du lien sur lequel les utilisateurs peuvent cliquer pour sélectionner un jour.

Lorsque le contrôle Calendar crée la sortie à envoyer au navigateur, il déclenche un événement DayRender. Le contrôle déclenche l'événement pour chaque journée à mesure qu'il prépare l'affichage de cette journée, ce qui vous permet alors de vérifier par programme quelle date est rendue et de la personnaliser à votre convenance.

La méthode de l'événement DayRender accepte deux arguments : une référence au contrôle déclenchant l'événement (le contrôle Calendar) et un objet de type DayRenderEventArgs. L'objet DayRenderEventArgs donne accès à deux objets supplémentaires :

  • Cell, un objet TableCell que vous pouvez utiliser pour définir l'apparence d'une certaine journée.

  • Day, que vous pouvez utiliser pour obtenir des informations sur la journée rendue, déterminer si cette journée peut être sélectionnée et lui ajouter du contenu. L'objet Day prend en charge diverses propriétés que vous pouvez utiliser pour obtenir des informations sur le jour concerné (il s'agit par exemple de IsSelected et IsToday). Il prend également en charge une collection Controls que vous pouvez manipuler pour ajouter du contenu à la journée.

Pour personnaliser l'apparence d'une journée

  1. Créez une méthode pour gérer l'événement DayRender du contrôle Calendar.

  2. Dans la méthode, définissez les propriétés de l'objet Cell, auquel vous pouvez accéder avec l'argument DayRenderEventArgs.

    L'exemple suivant indique comment modifier l'apparence de jours individuels. Cette méthode provoque l'affichage en jaune des jours de congé et en vert des jours de fin de semaine. Dans l'exemple, les vacances sont du 23 novembre au 30 novembre 2005.

    Protected Sub Calendar1_DayRender(ByVal sender As Object, _
            ByVal e As DayRenderEventArgs) Handles Calendar1.DayRender
        ' Display vacation dates in yellow boxes with purple borders.
        Dim vacationStyle As New Style()
        With vacationStyle
            .BackColor = System.Drawing.Color.Yellow
            .BorderColor = System.Drawing.Color.Purple
            .BorderWidth = New Unit(3)
        End With
    
        ' Display weekend dates in green boxes.
        Dim weekendStyle As New Style()
        weekendStyle.BackColor = System.Drawing.Color.Green
    
        ' Vacation is from Nov 23, 2005 to Nov 30, 2005.
        If ((e.Day.Date >= New Date(2005, 11, 23)) _
                And (e.Day.Date <= New Date(2005, 11, 30))) Then
            e.Cell.ApplyStyle(vacationStyle)
        ElseIf (e.Day.IsWeekend) Then
            e.Cell.ApplyStyle(weekendStyle)
        End If
    End Sub
    
    protected void Calendar1_DayRender(object sender, 
        DayRenderEventArgs e)
    {
        // Display vacation dates in yellow boxes with purple borders.
        Style vacationStyle = new Style();
        vacationStyle.BackColor = System.Drawing.Color.Yellow;
        vacationStyle.BorderColor = System.Drawing.Color.Purple;
        vacationStyle.BorderWidth = 3;
    
        // Display weekend dates in green boxes.
        Style weekendStyle = new Style();
        weekendStyle.BackColor = System.Drawing.Color.Green;
    
        if ((e.Day.Date >= new DateTime(2000,11,23)) &&
            (e.Day.Date <= new DateTime(2000,11,30)))
        {
            // Apply the vacation style to the vacation dates.
            e.Cell.ApplyStyle(vacationStyle);
        }
        else if (e.Day.IsWeekend)
        {
            // Apply the weekend style to the weekend dates.
            e.Cell.ApplyStyle(weekendStyle);
        }
    

Pour spécifier qu'un jour peut être sélectionné

  1. Dans une méthode pour l'événement DayRender du contrôle Calendar, déterminez quel jour est rendu en obtenant des informations de la part de la propriété Date de l'objet Day.

  2. Attribuez la valeur vrai (true) à la propriété IsSelectable du jour.

    L'exemple suivant indique comment définir la date du 1er octobre 2005 comme sélectionnable ; toutes les autres dates ne sont pas rendues sélectionnables.

    Protected Sub Calendar1_DayRender(ByVal sender As Object, _
            ByVal e As DayRenderEventArgs) Handles Calendar1.DayRender
        Dim myAppointment As Date = New Date(2005, 10, 1)
        If (e.Day.Date = myAppointment) Then
            e.Day.IsSelectable = True
        Else
            e.Day.IsSelectable = False
        End If
    End Sub
    
    protected void Calendar1_DayRender(object sender, 
        DayRenderEventArgs e)
    {
        DateTime myAppointment = new DateTime(2005, 10, 1);
        if (e.Day.Date == myAppointment)
        {
            e.Day.IsSelectable = true;
        }
        else
        {
            e.Day.IsSelectable = false; 
        }
    }
    

Pour ajouter du contenu à une journée

  • Dans un gestionnaire pour l'événement DayRender du contrôle Calendar, ajoutez tout contrôle Web HTML ou ASP.NET à la collection Controls de l'objet Day à partir de l'argument DayRenderEventArgs.

    L'exemple suivant affiche les jours fériés. La liste des jours fériés est créée sous forme de tableau à deux dimensions pendant le chargement de la page. Les descriptions des jours fériés sont chargées dans les éléments correspondant à leur date. Dans la méthode de l'événement DayRender, chaque jour est comparé au tableau des jours fériés. Si l'élément correspondant du tableau des jours fériés contient une valeur, un contrôle Label est créé ; il contient le texte du jour férié et est ajouté à la collection Controls du jour concerné.

    Dim holidays(13, 32) As String
    
    Protected Sub Page_Load(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles Me.Load
        holidays(1, 1) = "Birthday"
        holidays(2, 14) = "Anniversary"
    End Sub
    
    Protected Sub Calendar1_DayRender(ByVal sender As Object, _
            ByVal e As DayRenderEventArgs) Handles Calendar1.DayRender
        If e.Day.IsOtherMonth Then
            e.Cell.Controls.Clear()
        Else
            Dim aDate As Date = e.Day.Date
            Dim aHoliday As String = holidays(aDate.Month, aDate.Day)
            If (Not aHoliday Is Nothing) Then
                Dim aLabel As Label = New Label()
                aLabel.Text = "<br>" & aHoliday
                e.Cell.Controls.Add(aLabel)
            End If
        End If
    End Sub
    
    string[,] holidays = new String[13, 32];
    
    protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
    {
        string aHoliday;
        DateTime theDate = e.Day.Date;
        aHoliday = holidays[theDate.Month, theDate.Day];
        if (aHoliday != null)
        {
            Label aLabel = new Label();
            aLabel.Text = " <br>" + aHoliday;
            e.Cell.Controls.Add(aLabel);
        }
    
    }
    
    protected void Page_Load(object sender, EventArgs e)
    {
        holidays[1, 1] = "Birthday";
        holidays[2, 14] = "Anniversary";
    }
    

Pour personnaliser le texte du lien pour des jours individuels

  1. Dans une méthode pour l'événement DayRender du contrôle Calendar, recherchez la propriété SelectUrl de l'argument DayRenderEventArgs. La propriété SelectUrl retourne le code JavaScript qui est normalement rendu pour ce jour, afin de provoquer une publication indiquant la sélection de date.

  2. À l'aide d'une concaténation, créez un lien hypertexte HTML qui utilise la valeur de la propriété SelectUrl comme attribut href

  3. Ajoutez le lien hypertexte comme propriété Text de l'objet Cell.

    L'exemple suivant affiche les jours fériés. La liste des jours fériés est créée sous forme de tableau à deux dimensions pendant le chargement de la page. Les descriptions des jours fériés sont chargées dans les éléments correspondant à leur date. Dans la méthode de l'événement DayRender, chaque jour est comparé au tableau des jours fériés. Si l'élément correspondant du tableau de jours fériés contient une valeur, le code crée un texte de lien qui affiche le nom du jour férié au lieu du quantième.

    Dim holidays(13, 32) As String
    
    Protected Sub Page_Load(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles Me.Load
        holidays(1, 1) = "Birthday"
        holidays(2, 14) = "Anniversary"
    End Sub
    
    Protected Sub Calendar1_DayRender(ByVal sender As Object, _
            ByVal e As DayRenderEventArgs) Handles Calendar1.DayRender
        If e.Day.IsOtherMonth Then
            e.Cell.Controls.Clear()
        Else
            Dim aDate As Date = e.Day.Date
            Dim aHoliday As String = holidays(aDate.Month, aDate.Day)
            If (Not aHoliday Is Nothing) Then
                e.Cell.Text = _
                    "<a href=" & e.SelectUrl & ">" & aHoliday & "</a>"
            End If
        End If
    End Sub
    
    string[,] holidays = new String[13, 32];
    
    protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
    {
        string aHoliday;
        DateTime theDate = e.Day.Date;
        aHoliday = holidays[theDate.Month, theDate.Day];
        if (aHoliday != null)
        {
            e.Cell.Text = "<a href=" + e.SelectUrl + ">" + 
               aHoliday + "</a>";
        }
    }
    
    protected void Page_Load(object sender, EventArgs e)
    {
        holidays[1, 1] = "Birthday";
        holidays[2, 14] = "Anniversary";
    }
    

Voir aussi

Tâches

Comment : afficher des dates sélectionnées d'une base de données dans le contrôle Calendar

Concepts

Vue d'ensemble du contrôle serveur Web Calendar