Un calendrier plus ou moins abouti

Soyez le premier à donner votre avis sur cette source.

Vue 25 203 fois - Téléchargée 904 fois

Description

salut,
n'ayant pas trouvé de calendrier asp.net digne de ce nom, j'en ai préparé un, reste à le mettre en page à votre sauce.
pour passer au semestre suivant :
creationCalendrier(1);

Source / Exemple :


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        creationCalendrier(0);
        
    }
    string ferie(System.DateTime dateTraitee)
    {
        int year;
        int month;
        int day;
        year = dateTraitee.Year;
        month = dateTraitee.Month;
        day = dateTraitee.Day;
        //calcul du jour de paques
        int B;
        int D;
        int E;
        int Q;
        int monthPaques;
        int dayPaques;
        int monthLundiPaques;
        int dayLundiPaques;

        B = 225 - 11 * (year % 19);
        D = (B - 21) % 30 + 21;
        if (D > 48)
        {
            D = D - 1;
        }
        E = (year + (year / 4) + D + 1) % 7;
        Q = D + 7 - E;
        if (Q < 32)
        {
            monthPaques = 3;
            dayPaques = Q;
        }
        else
        {
            monthPaques = 4;
            dayPaques = Q - 31;
        }
        if (Q < 31)
        {
            monthLundiPaques = 3;
            dayLundiPaques = Q + 1;
        }
        else
        {
            monthLundiPaques = 4;
            dayLundiPaques = Q - 30;
        }
        //jeudi assencion 39 jours aprés pages

        if ((dateTraitee.AddDays(-39).Day == dayPaques) & (dateTraitee.AddDays(-39).Month == monthPaques))
        {
            return " assencion";
        }
        //dimanche de pentecote 49 jours aprés paques
        if ((dateTraitee.AddDays(-49).Day == dayPaques) & (dateTraitee.AddDays(-49).Month == monthPaques))
        {
            return " pentecote";
        }

        if (month == monthPaques & day == dayPaques)
        { return " paques"; }

        if (month == monthLundiPaques & day == dayLundiPaques)
        { return " lundi paques"; }

        if (month == 7 & day == 14)
        { return " fête nation."; }

        if (month == 1 & day == 1)
        { return " jour de l'an"; }

        if (month == 5 & day == 1)
        { return " fête du travail"; }

        if (month == 5 & day == 8)
        { return " armistice 1945"; }

        if (month == 11 & day == 11)
        { return " armistice 1918"; }

        if (month == 8 & day == 15)
        { return " assomption"; }

        if (month == 11 & day == 1)
        { return " toussaint"; }

        if (month == 12 & day == 25)
        { return " noel"; }

        return "";

    }
    private void creationCalendrier(int addSemestre)
    {
        HtmlGenericControl calendrier = new HtmlGenericControl("div id='calendrier' runat='server' class='calendrier'");
        Page.Form.Controls.Add(calendrier);
        for (int i=0; i <6; i++)
        {
            int facteurSemestre=0;
            switch (DateTime.Today.AddMonths(6*addSemestre).Month)
            {
                case 1:facteurSemestre=0;
                    break;
                case 2:facteurSemestre=-1;
                    break;
                case 3:facteurSemestre=-2;
                    break;
                case 4:facteurSemestre=-3;
                    break;
                case 5:facteurSemestre=-4;
                    break;
                case 6:facteurSemestre=-5;
                    break;
                case 7: facteurSemestre = 0;
                    break;
                case 8: facteurSemestre = -1;
                    break;
                case 9: facteurSemestre = -2;
                    break;
                case 10: facteurSemestre = -3;
                    break;
                case 11: facteurSemestre = -4;
                    break;
                case 12: facteurSemestre = -5;
                    break;
                    
            }
            int nMoisTraite = DateTime.Today.AddMonths(addSemestre*6+i+facteurSemestre).Month;
            string sMoisTraite="";
            switch (nMoisTraite)
            {
                case 1: sMoisTraite = "Janvier ";
                    break;
                case 2: sMoisTraite = "Février ";
                    break;
                case 3: sMoisTraite = "Mars ";
                    break;
                case 4: sMoisTraite = "Avril ";
                    break;
                case 5: sMoisTraite = "Mai ";
                    break;
                case 6: sMoisTraite = "Juin ";
                    break;
                case 7: sMoisTraite = "Juillet ";
                    break;
                case 8: sMoisTraite = "Aout ";
                    break;
                case 9: sMoisTraite = "Septembre ";
                    break;
                case 10: sMoisTraite = "Octobre ";
                    break;
                case 11: sMoisTraite = "Novembre ";
                    break;
                case 12: sMoisTraite = "Décembre ";
                    break;
            }

            HtmlGenericControl mois = new HtmlGenericControl("div id='" + sMoisTraite + "' class='mois' runat='server'");
            HtmlGenericControl nomMois = new HtmlGenericControl("div id='nom" + sMoisTraite + "' class='teteMois' runat='server'");
            calendrier.Controls.Add(mois);
            mois.Controls.Add(nomMois);
            Label lblMois = new Label();
            lblMois.Text = sMoisTraite;
            nomMois.Controls.Add(lblMois);
            //creation de la div premiere semaine du mois
            int nSemaineMois = 1;
            HtmlGenericControl semaineTraitee;
            semaineTraitee = new HtmlGenericControl("div id='" + sMoisTraite + nSemaineMois.ToString() + "' class='semaines' runat='server'");
            
            for (int ni = 0; ni < DateTime.DaysInMonth(DateTime.Today.AddMonths(addSemestre * 6 + i + facteurSemestre).Year, DateTime.Today.AddMonths(addSemestre * 6 + i + facteurSemestre).Month); ni++)
            {
                //ne pas ooublier les div semaine
                
                string jourTraitee = DateTime.Today.AddMonths(addSemestre * 6 + i + facteurSemestre)
                .AddDays(-DateTime.Today.AddMonths(addSemestre * 6 + i + facteurSemestre).Day + ni + 1).DayOfWeek.ToString();

                if (jourTraitee == "Monday" || ni == 0)
                {

                    semaineTraitee = new HtmlGenericControl("div id='" + sMoisTraite + nSemaineMois.ToString() + "' class='semaines' runat='server'");
                    mois.Controls.Add(semaineTraitee);
                    nSemaineMois++;
                }
                //préparation de la string du jour
                string jour = "";
                jour += (ni+1).ToString() + " " + jourTraitee;
                if (ni < 9)
                {
                    jour = jour.Replace(" ", "  ");
                }
                jour = jour.Replace("Saturday", "Samedi");
                jour = jour.Replace("Sunday", "Dimanche");
                jour = jour.Replace("Monday", "Lundi");
                jour = jour.Replace("Tuesday", "Mardi");
                jour = jour.Replace("Wednesday", "Mercredi");
                jour = jour.Replace("Thursday", "Jeudi");
                jour = jour.Replace("Friday", "Vendredi");
                
                jour = jour.Substring(0, 5);
                string libelleFerie=ferie(DateTime.Today.AddMonths(addSemestre * 6 + i + facteurSemestre)
                .AddDays(-DateTime.Today.AddMonths(addSemestre * 6 + i + facteurSemestre).Day + ni + 1));
                jour += libelleFerie;
                if (libelleFerie != "")
                {
                    //implementer ici une éventuelle requete sur une bdd fetes
                    //jour+=libelleFete
                    
                }

                //preparation div jour et label
                // faire test switch dimanche, ferié, samedi pour attribution cssClass

                HtmlGenericControl divJourTraite;
                //= new HtmlGenericControl("div id='" +(ni+1).ToString()+ sMoisTraite + "'");
                if (jourTraitee == "Sunday")
                {
                    divJourTraite = new HtmlGenericControl("div id='" + (ni + 1).ToString() + sMoisTraite + "' class='dimanche'");

                }
                else
                {
                    if (jourTraitee == "Saturday")
                    {
                        divJourTraite = new HtmlGenericControl("div id='" + (ni + 1).ToString() + sMoisTraite + "' class='samedi'");
                    }
                    else
                    {
                        if (libelleFerie != "")
                        {
                            divJourTraite = new HtmlGenericControl("div id='" + (ni + 1).ToString() + sMoisTraite + "' class='ferie'");
                        }
                        else
                        {
                            divJourTraite = new HtmlGenericControl("div id='" + (ni + 1).ToString() + sMoisTraite + "' class='autreJour'");
                        }
                    }
                }
               
                Label lblJour=new Label();
                lblJour.Text=jour;
                semaineTraitee.Controls.Add(divJourTraite);
                divJourTraite.Controls.Add(lblJour);

            }
        }

    }

}

coté css :

body 
{
    font-family : Arial;
    
}
.calendrier
{
    width : 666px;
    border-top :#738294 thin solid;
    border-top-width:1px;
    border-left :#738294 thin solid;
    border-left-width:1px;
}
.mois
{
    float :left;
    width : 110px;
    font-size : 11px;
    border-right :#738294 thin solid;
    border-right-width:1px;
}
.semaines
{
    border-bottom :#738294 thin solid;
    border-bottom-width:1px;
}
.teteMois
{
    font-size : 14px;
    border-bottom :#738294 thin solid;
    border-bottom-width:2px;
    text-align : center;
    background-color :#E8E8E8;
    
    
}
.dimanche
{
    background-color :#B59BFE;
}
.samedi
{
    background-color : #D9CCFF;
}
.ferie
{
    background-color : #FF8383;
}

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
149
Date d'inscription
samedi 19 mars 2005
Statut
Membre
Dernière intervention
15 septembre 2007

salut, les années bissextiles sont prises en compte dans ce calendrier.
Messages postés
37
Date d'inscription
mardi 18 juin 2002
Statut
Membre
Dernière intervention
28 juin 2007

Bonjour,
Cela me rapelle de bons souvenirs .. hi hi ...

Sous JavaScript j'en avait fait un aussi (http://www.javascriptfr.com/codes/CALENDRIER-AVEC-FERIES_15875.aspx), c'est juste un clin d'oeil.

Il me semble que tu n'as pas calculé si l'année est bisexetile. Dans ce cas le nombre de jour de Février ne sont pas les mêmes..

Et je ne m'y connais que trop peu en ASP.Net pour faire des commentaires.
Bonne continuation
Messages postés
1
Date d'inscription
jeudi 16 novembre 2006
Statut
Membre
Dernière intervention
16 novembre 2006

Salut sympa ton calendrier
mais pourquoi faire?
je me renseigne car je suis novice dans le metier, je debute!
Messages postés
149
Date d'inscription
samedi 19 mars 2005
Statut
Membre
Dernière intervention
15 septembre 2007

ok, c'est fait, merci
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
22
Normalement c'est bon pour uploader le zip :) petit problème sur les sites depuis hier ...
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.