begin process at 2008 05 16 08:48:35
1 173 235 membres
76 nouveaux aujourd'hui
13 970 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UTILISATION DES DATATABLES ET L'AFFICHAGE DU CONTENU DANS UNE PAGE ASPX


Information sur la source

Catégorie :Administration Source .NET ( DotNet ) Classé sous : DataTable, TableAdapter, HtmlTableCell Niveau : Débutant Date de création : 13/04/2008 Date de mise à jour : 14/04/2008 13:40:36 Vu : 2 180

Note :
Aucune note

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

Description

Le code source charge une DataTabe depuis une DataSet
puis j'affiche le contenue dans une page web sous forme de bande qui décris une durée en terme de temps.

Source

  • using System;
  • using System.Data;
  • using System.Configuration;
  • 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;
  • using EMIRapportDataSetTableAdapters;
  • /// <summary>
  • /// ClassName:MarketingClass
  • /// Release Date:21/12/2007
  • /// Description:Classe pour le traittement de la partie Marketing
  • /// </summary>
  • public class MarketingClass
  • {
  • private string DetailsTypeCode; //Code de l'entity Details;
  • private string MarketingTypeCode; //Code de l'entity marketing dans le CRM
  • private Int32 NbRows; //Nombre de Ligne dans le DataTabe des Marketing
  • private DateTime DateDeb; //Date début d'un enregistrement Marketing
  • private DateTime DateFin; //Date fin d'un enregistrement Marketing
  • private string StringDateDeb;
  • private string StringDateFin;
  • private Int32 Nbs = 0; //Nombre de semaine Totale entre DateDeb et DateFin
  • private Int32 DebMois; //Le numero de Mois de la date de début
  • private Int32 FinMois; //Le numero de Mois de a date de fin
  • private Int32 DebSemaine; //Numero de la semaine de la date de début (Premiere semaine a partir de la quel on débute le déssin exemple:S1 de Mars)
  • private Int32 FinSemaine; //Numero de la semaine de la Date de fin (Derniere semaine exemple S3 de Juin)
  • private Guid Artist_Id; //Guid de l'artiste
  • private Guid Project_Id; //Guid de l'album
  • private Guid MarketingGuid; //CodeType de l'entity Marketing
  • private string MarketingTitle; //Titre d'un enregistrement Marketing
  • private string budget;
  • // private string Album;
  • int NumSDeb_Ann; //Numero de la semaine de début dans l'année
  • int NumSFin_Ann; //Numero de la semaine de fin dans l'année
  • int NumS1er_J_Deb_Ann; //numero de la semaine dans l'année de la premiere semaine dans un moi donnée(Pour la date de début)
  • int NumS1er_J_Fin_Ann; //numero de la semaine dans l'année de la premiere semaine dans un moi donnée(Pour la date de fin)
  • private DateClass DateC; //Attribut de la class Date pour les opération spécial de calcule des semaines...
  • // private HtmlTable[] TableOfWeek; //Tableau qui contient les ID des Tabeaux de semaine dans la page Aspx pour la partie Marketing
  • private ArtistClass ArtistC; //Attribut de type Artiste
  • private int TodayMonth; //Mois du jour courant
  • private int TodayWeek; //Lasemaine courante
  • private int TodayFirstWeek; //la semaine du 1er jour dans le mois courant
  • private int TodayNumWeek; //la semaine du jour en cours(de 1 à 4)
  • private DateTime Today; //la date d'aujoudhui
  • private MarketingTableAdapter MarketingTableAdapter; //Table Adapter qui contient les informations des enregistrements de Marketing
  • private EMIRapportDataSet.MarketingDataTable MarketingData;
  • #region Constructeur
  • /// <summary>
  • /// Constructeur
  • /// <returns>
  • /// None
  • /// </returns>
  • /// <param name="ArtistId">
  • /// Le Guid de L'artiste
  • /// </param>
  • /// <param name="ProjectId">
  • /// Le Guid de l'album
  • /// </param>
  • /// <param name="TypeIdMarketing">
  • /// le type code de l'entity Marketing
  • /// </param>
  • /// </summary>
  • public MarketingClass(string ArtistId, string ProjectId, string TypeIdMarketing, string DetailsTypeCode)
  • {
  • this.DetailsTypeCode = DetailsTypeCode;
  • this.MarketingTypeCode = TypeIdMarketing;
  • this.Artist_Id = new Guid(ArtistId);
  • this.Project_Id = new Guid(ProjectId);
  • this.ArtistC = new ArtistClass(ArtistId, ProjectId);
  • this.MarketingTableAdapter = new MarketingTableAdapter();
  • this.MarketingData = new EMIRapportDataSet.MarketingDataTable();
  • #region Création de la date d'aujourd'hui
  • this.DateC = new DateClass();
  • this.Today = DateTime.Today;
  • this.TodayMonth = Today.Month;
  • this.TodayWeek = DateC.NumeroSemaine(Today);
  • this.TodayFirstWeek=DateC.NumeroSemaine(Convert.ToDateTime("01" + Today.ToString().Remove(0, 2)));
  • this.TodayNumWeek = DateC.localiserSemaine(TodayFirstWeek, TodayWeek);
  • #endregion
  • try
  • {
  • MarketingTableAdapter.FillMarketingByArtistId_ProjectId(MarketingData, Project_Id, Artist_Id);
  • }
  • catch (Exception ex)
  • {
  • MessageBox.Show(ex.Message.ToString());
  • }
  • }
  • #endregion
  • #region Méthode pour la construction de la liste des Marketings
  • /// <summary>
  • /// Méthode pour la construction de la liste des Marketings
  • /// <returns>
  • /// Void
  • /// </returns>
  • /// <param name="T">
  • /// L'ID du Tableau Marketing Dans la page Aspx
  • /// </param>
  • /// <param name="TofWeek">
  • /// L'ID du Tableau des Weekend
  • /// </param>
  • /// </summary>
  • public void DisplayMarketingTable(HtmlTable T,HtmlTable[] TofWeek)
  • {
  • Int32 StarRow = 0; //Compteur qui parcoure le DataTable des Marketing
  • NbRows = MarketingData.Rows.Count; //Nombre de ligne dans la DataTable de MARKETING
  • #region Boucle qui parcoure le DataTable des Marketing et Lance l'affichage dans la page Aspx
  • for (StarRow = 0; StarRow < NbRows; StarRow++)
  • {
  • HtmlTableRow Maligne = new HtmlTableRow(); //Nouvelle ligne
  • HtmlTableCell MaCase = new HtmlTableCell(); //Nouvelle case
  • MaCase.Style.Add(HtmlTextWriterStyle.Color, "#3f4b68");
  • // MaCase.InnerText = MarketingData.Rows[StarRow].ItemArray[1].ToString(); //Affectation du texte d'un enregistrement Marketing dans la case
  • MaCase.InnerHtml = "&nbsp;<img src=\"ico_Arrow_R.gif\"/>"+" " + MarketingData.Rows[StarRow].ItemArray[1].ToString();
  • Maligne.Attributes.Add("id", string.Concat("Marke", StarRow));
  • Maligne.Cells.Add(MaCase);
  • Maligne.Style.Add(HtmlTextWriterStyle.FontStyle, "Tahoma, 10");
  • T.Rows.Add(Maligne);
  • MarketingGuid = new Guid(MarketingData.Rows[StarRow].ItemArray[0].ToString());
  • MarketingTitle = MarketingData.Rows[StarRow].ItemArray[1].ToString();
  • budget = MarketingData.Rows[StarRow].ItemArray[4].ToString();
  • //Date debut d'une Marketing
  • StringDateDeb = MarketingData.Rows[StarRow].ItemArray[3].ToString();
  • DateDeb = Convert.ToDateTime(MarketingData.Rows[StarRow].ItemArray[3].ToString());
  • //Date de Fin d'une Marketing
  • StringDateFin = MarketingData.Rows[StarRow].ItemArray[2].ToString();
  • DateFin = Convert.ToDateTime(MarketingData.Rows[StarRow].ItemArray[2].ToString());
  • //Mois de début
  • DebMois = DateDeb.Month;
  • //Mois de fin
  • FinMois = DateFin.Month;
  • #region Traittement de calcule de Nombre de semaine totale pour l'enregistrement en cours
  • NumSDeb_Ann = DateC.NumeroSemaine(DateDeb);
  • // MessageBox.Show("NumSDeb_Ann " + NumSDeb_Ann.ToString());
  • NumS1er_J_Deb_Ann = DateC.NumeroSemaine(Convert.ToDateTime("01" + DateDeb.ToString().Remove(0, 2)));
  • // MessageBox.Show("NumS1er_J_Deb_Ann " + NumS1er_J_Deb_Ann.ToString());
  • NumS1er_J_Fin_Ann = DateC.NumeroSemaine(Convert.ToDateTime("01" + DateFin.ToString().Remove(0, 2)));
  • NumSFin_Ann = DateC.NumeroSemaine(DateFin);
  • // MessageBox.Show("NumS1er_J_Fin_Ann " + NumS1er_J_Fin_Ann.ToString());
  • // MessageBox.Show("NumSFin_Ann " + NumSFin_Ann.ToString());
  • if (NumSFin_Ann < NumS1er_J_Fin_Ann)
  • {
  • NumSFin_Ann = NumS1er_J_Fin_Ann + 4;
  • }
  • Nbs = NumSFin_Ann - NumSDeb_Ann;
  • DebSemaine = DateC.localiserSemaine(NumS1er_J_Deb_Ann, NumSDeb_Ann);
  • //MessageBox.Show("DebSemaine " + DebSemaine.ToString());
  • FinSemaine = DateC.localiserSemaine(NumS1er_J_Fin_Ann, NumSFin_Ann);
  • // MessageBox.Show("FinSemaine " + FinSemaine.ToString());
  • #endregion
  • //Nbs = Nbs + 1;
  • // MessageBox.Show(Nbs.ToString());
  • //Appel a la fonction qui affiche une ligne de marketing
  • DisplayMarketingLigne(DebSemaine, FinSemaine, Nbs, DebMois-1 , FinMois-1 , MarketingGuid, TofWeek, StarRow,string.Concat("Marke",StarRow.ToString()));
  • }
  • #endregion
  • // Marketing
  • }
  • #endregion
  • #region Méthode pour la construction d'une ligne de Marketing
  • /// <summary>
  • /// Méthode pour la construction d'une ligne de Marketing
  • /// <returns>
  • /// Void
  • /// </returns>
  • /// <param name="SdebT">
  • /// Le numéro de la semaine de début de la ligne (de 1 à 4)
  • /// </param>
  • /// <param name="SfinT">
  • /// Le numéro de la semaine de Fin de la ligne (de 1 à 4)
  • /// </param>
  • /// <param name="NombreSemaine">
  • /// Nombre de semaine Totale entre SdebT et SfinT de la ligne
  • /// </param>
  • /// <param name="Moisdeb">
  • /// Mois de début de la ligne (de 1 à 12)
  • /// </param>
  • /// <param name="Moisfin">
  • /// Mois de début de la ligne (de 1 à 12)
  • /// </param>
  • /// <param name="IndexGuid">
  • /// Guid du Marketing en cours (Utilisée pour l'ouverture du formulaire CRM)
  • /// </param>
  • /// <param name="NumLigneCourante">
  • /// Numéro de ligne courante (Utilisée pour savoir la couleur choisie de ligne:Bleu ou bleu claire)
  • /// </param>
  • /// </summary>
  • private void DisplayMarketingLigne(Int32 SdebT, Int32 SfinT, Int32 NombreSemaine, Int32 Moisdeb, Int32 Moisfin, Guid IndexGuid,HtmlTable[] TofWeek,int NumLigneCourante,string Prefix)
  • {
  • Int32 IndexMois = 0;
  • Int32 K;
  • //MessageBox.Show(Moisdeb.ToString());
  • #region Parcourir les Mois avant le Mois de début
  • for (K = 0; K < Moisdeb; K++)
  • {
  • //MessageBox.Show("Avant");
  • if (K == (TodayMonth - 1))
  • {
  • PutCellsIntoTableEmpty(TofWeek[K], true,K,Prefix);
  • }
  • else
  • {
  • PutCellsIntoTableEmpty(TofWeek[K], false, K, Prefix);
  • }
  • }
  • #endregion
  • #region Parcourir les mois concerner(les mois coloré)
  • for (IndexMois = Moisdeb; IndexMois <= Moisfin; IndexMois++)
  • {
  • // MessageBox.Show(IndexMois.ToString());
  • if (IndexMois == Moisdeb && NombreSemaine >= 4)
  • {
  • //MessageBox.Show("H1");
  • if (IndexMois == (TodayMonth - 1))
  • {
  • PutCellsIntoTable(TofWeek[IndexMois], SdebT, 4, IndexGuid, NumLigneCourante, true,IndexMois, Prefix);
  • }
  • else
  • {
  • PutCellsIntoTable(TofWeek[IndexMois], SdebT, 4, IndexGuid, NumLigneCourante, false, IndexMois, Prefix);
  • }
  • }
  • else if (IndexMois == Moisdeb && NombreSemaine < 4)
  • {
  • // MessageBox.Show("H1");
  • if (IndexMois == (TodayMonth - 1))
  • {
  • PutCellsIntoTable(TofWeek[IndexMois], SdebT, SfinT, IndexGuid, NumLigneCourante, true, IndexMois, Prefix);
  • }
  • else
  • {
  • PutCellsIntoTable(TofWeek[IndexMois], SdebT, SfinT, IndexGuid, NumLigneCourante, false, IndexMois, Prefix);
  • }
  • }
  • if (IndexMois > Moisdeb && IndexMois < Moisfin)
  • {
  • if (IndexMois == TodayMonth - 1)
  • {
  • PutCellsIntoTable(TofWeek[IndexMois], 1, 4, IndexGuid, NumLigneCourante, true, IndexMois, Prefix);
  • }
  • else
  • {
  • PutCellsIntoTable(TofWeek[IndexMois], 1, 4, IndexGuid, NumLigneCourante, false, IndexMois, Prefix);
  • }
  • }
  • if (IndexMois == Moisfin && Moisdeb!=Moisfin)
  • {
  • if (IndexMois == TodayMonth - 1)
  • {
  • PutCellsIntoTable(TofWeek[IndexMois], 1, SfinT, IndexGuid, NumLigneCourante, true, IndexMois, Prefix);
  • }
  • else
  • {
  • PutCellsIntoTable(TofWeek[IndexMois], 1, SfinT, IndexGuid, NumLigneCourante, false, IndexMois, Prefix);
  • }
  • }
  • }
  • #endregion
  • #region Parcourir les mois aprés le mois de fin
  • for (K = Moisfin + 1; K <= 11; K++)
  • {
  • if (K == (TodayMonth - 1))
  • {
  • PutCellsIntoTableEmpty(TofWeek[K], true, K, Prefix);
  • }
  • else
  • {
  • PutCellsIntoTableEmpty(TofWeek[K], false, K, Prefix);
  • }
  • }
  • #endregion
  • }
  • #endregion
  • #region Méthode qui remplie les cellules des mois vide
  • /// <summary>
  • /// Méthode qui remplie les cellules des mois vide
  • /// <returns>
  • /// Void
  • /// </returns>
  • /// <param name="T">
  • /// L'ID du Tableau de semaine dans la page Aspx
  • /// </param>
  • /// <param name="ToDayM">
  • /// True si le Tableau de semaine (T) appartient au mois de la date d'aujourd'hui si non false
  • /// </param>
  • /// </summary>
  • protected void PutCellsIntoTableEmpty(HtmlTable T,bool ToDayM,int NumDetailMois,string Prefix)
  • {
  • HtmlTableRow Maligne = new HtmlTableRow();
  • for (Int32 i = 0; i < 4; i++)
  • {
  • #region Création d'une cellule qui contient la date d'aujourd'hui si le numéro de week = i
  • if (ToDayM == true && (i==(TodayNumWeek-1)))
  • {
  • HtmlTableCell MaCase = new HtmlTableCell();
  • MaCase.Style.Add(HtmlTextWriterStyle.Color, "#dd0000");
  • MaCase.InnerText = "|";
  • Maligne.Cells.Add(MaCase);
  • MaCase.Attributes.Add("onMouseOver", "InfoBulleToDay()");
  • }
  • #endregion
  • #region Création d'une cellule normale
  • else
  • {
  • HtmlTableCell MaCase = new HtmlTableCell();
  • MaCase.Style.Add(HtmlTextWriterStyle.Color, "#eef0f6");
  • MaCase.InnerText = "-";
  • Maligne.Cells.Add(MaCase);
  • }
  • #endregion
  • }
  • Maligne.Attributes.Add("id", string.Concat(Prefix, NumDetailMois));
  • T.Rows.Add(Maligne);
  • }
  • #endregion
  • #region Méthode qui remplie les cellules dans un Tableau de semaine qui appartient a un mois donnée
  • /// <summary>
  • /// Méthode qui remplie les cellules dans un Tableau de semaine qui appartient a un mois donnée
  • /// <returns>
  • /// Void
  • /// </returns>
  • /// <param name="T">
  • /// L'ID du Tableau de semaine d'un mois donnée dans la page Aspx
  • /// </param>
  • /// <param name="Sdeb">
  • /// Numéro de la semaine de début (1 à 4)
  • /// </param>
  • /// <param name="Sfin">
  • /// Numéro de la semaine de fin (1 à 4)
  • /// </param>
  • /// <param name="IndexGUID">
  • /// Guid de l'enregistrement Marketing,Utiliser pour l'ouverture du formulaire CRM aprés le OnClick sur une cellule
  • /// </param>
  • /// <param name="NumLigneCourante">
  • /// Numéro de la ligne en cours,utiliser pour différencier les ligne en bleu ou bleu claire
  • /// </param>
  • /// <param name="ToDayM">
  • /// True si T apprtient a un mois de la date d'aujourd'hui si non False
  • /// </param>
  • /// </summary>
  • protected void PutCellsIntoTable(HtmlTable T, Int32 Sdeb, Int32 Sfin, Guid IndexGUID, int NumLigneCourante, bool ToDayM,int NumDetailMois,string Prefix)
  • {
  • HtmlTableRow Maligne = new HtmlTableRow();
  • Int32 D;
  • Int32 i = 0;
  • int FolowToDayWeek=0;
  • string Titre = "Marketing";
  • string IntervalDate = "Du "+StringDateDeb+ " au " +StringDateFin;
  • string Budget = budget + " Euro";
  • string Album = ArtistC.GetAlbum(); ;
  • #region Afficher les Cellules vide qui se trouve avant la semaine de début
  • D = (Sfin - Sdeb) +1;
  • //MessageBox.Show(D.ToString());
  • for (i = 0; i < Sdeb - 1; i++)
  • {
  • HtmlTableCell MaCase = new HtmlTableCell();
  • if (ToDayM == true && (i == (TodayNumWeek-1)))
  • {
  • MaCase.Style.Add(HtmlTextWriterStyle.Color, "#dd0000");
  • MaCase.InnerText = "|";
  • MaCase.Attributes.Add("onMouseOver", "InfoBulleToDay()");
  • }
  • else
  • {
  • MaCase.Style.Add(HtmlTextWriterStyle.Color, "#e3e3e3");
  • MaCase.InnerText = "-";
  • }
  • Maligne.Attributes.Add("id", string.Concat(Prefix, NumDetailMois));
  • Maligne.Cells.Add(MaCase);
  • }
  • #endregion
  • FolowToDayWeek = i;
  • T.Rows.Add(Maligne);
  • #region Afficher les Cellules qui contiennent de l'information
  • for (i = 0; i < D; i++)
  • {
  • HtmlTableCell MaCase = new HtmlTableCell();
  • HtmlTable Macase1 = new HtmlTable();
  • Maligne.Attributes.Add("id", string.Concat(Prefix, NumDetailMois));
  • Maligne.Attributes.Add("OnClick", "FormulaireCRM('" + IndexGUID.ToString() + "','" + MarketingTypeCode + "','" + DetailsTypeCode + "','" + Artist_Id.ToString() + "','" + Project_Id.ToString() + "')");
  • Maligne.Attributes.Add("onMouseOver", "InfoBulle('" + Titre + "','" + MarketingTitle + "','" + IntervalDate + "','" + Budget + "','" + Album + "')");
  • if (NumLigneCourante % 2 == 0)
  • {
  • MaCase.BgColor = "#749eff";
  • MaCase.Style.Add(HtmlTextWriterStyle.Color, "#749eff");
  • }
  • else
  • {
  • MaCase.BgColor = "#99ccff";
  • MaCase.Style.Add(HtmlTextWriterStyle.Color, "#99ccff");
  • }
  • if (ToDayM == true && (FolowToDayWeek == (TodayNumWeek - 1)))
  • {
  • //MessageBox.Show("TodayNumWeek-2 " + TodayNumWeek.ToString());
  • MaCase.Style.Add(HtmlTextWriterStyle.Color, "#dd0000");
  • MaCase.InnerText = "|";
  • MaCase.Attributes.Add("onMouseOver", "InfoBulleToDay()");
  • Maligne.Cells.Add(MaCase);
  • }
  • else
  • {
  • MaCase.InnerText = "-";
  • //MaCase.InnerHtml = "<table ><tr><td style=\"background-color:Red\"/>-</td></tr></table>";
  • Maligne.Cells.Add(MaCase);
  • }
  • FolowToDayWeek++;
  • }
  • #endregion
  • FolowToDayWeek = FolowToDayWeek + i;
  • T.Rows.Add(Maligne);
  • #region Afficher les cellules vide qui se trouve aprés la semaime de fin
  • for (i = 0; i < (4 - Sfin); i++)
  • {
  • HtmlTableCell MaCase = new HtmlTableCell();
  • if (ToDayM == true && (FolowToDayWeek == (TodayNumWeek - 1)))
  • {
  • MaCase.Style.Add(HtmlTextWriterStyle.Color, "#dd0000");
  • MaCase.InnerText = "|";
  • MaCase.Attributes.Add("onMouseOver", "InfoBulleToDay()");
  • }
  • else
  • {
  • MaCase.Style.Add(HtmlTextWriterStyle.Color, "#e3e3e3");
  • MaCase.InnerText = "-";
  • }
  • Maligne.Cells.Add(MaCase);
  • Maligne.Attributes.Add("id", string.Concat(Prefix, NumDetailMois));
  • FolowToDayWeek++;
  • }
  • #endregion
  • T.Rows.Add(Maligne);
  • }
  • #endregion
  • public int GetMarketingRowsNember()
  • {
  • return NbRows;
  • }
  • }
using System;
using System.Data;
using System.Configuration;
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;
using EMIRapportDataSetTableAdapters;

/// <summary>
/// ClassName:MarketingClass
/// Release Date:21/12/2007
/// Description:Classe pour le traittement de la partie Marketing
/// </summary>
public class MarketingClass
{
    private string DetailsTypeCode;    //Code de l'entity Details;
    private string MarketingTypeCode;  //Code de l'entity marketing dans le CRM
    private Int32 NbRows;      //Nombre de Ligne dans le DataTabe des Marketing
    private DateTime DateDeb;  //Date début d'un enregistrement Marketing
    private DateTime DateFin;  //Date fin d'un enregistrement Marketing
    private string StringDateDeb;
    private string StringDateFin;
    private Int32 Nbs = 0;     //Nombre de semaine Totale entre DateDeb et DateFin
    private Int32 DebMois;     //Le numero de Mois de la date de début
    private Int32 FinMois;     //Le numero de Mois de a date de fin
    private Int32 DebSemaine;  //Numero de la semaine de la date de début (Premiere semaine a partir de la quel on débute le déssin exemple:S1 de Mars)
    private Int32 FinSemaine;  //Numero de la semaine de la Date de fin (Derniere semaine exemple S3 de Juin)
    private Guid Artist_Id;    //Guid de l'artiste 
    private Guid Project_Id;   //Guid de l'album
    private Guid MarketingGuid; //CodeType de l'entity Marketing
    private string MarketingTitle;  //Titre d'un enregistrement Marketing
    private string budget;
   // private string Album;
    int NumSDeb_Ann;         //Numero  de la semaine de début dans l'année
    int NumSFin_Ann;         //Numero de la semaine de fin dans l'année
    int NumS1er_J_Deb_Ann;   //numero de la semaine dans l'année de la premiere semaine dans un moi donnée(Pour la date de début)
    int NumS1er_J_Fin_Ann;   //numero de la semaine dans l'année de la premiere semaine dans un moi donnée(Pour la date de fin)
    private DateClass DateC;  //Attribut de la class Date pour les opération spécial de calcule des semaines...
   // private HtmlTable[] TableOfWeek;   //Tableau qui contient les ID des Tabeaux de semaine dans la page Aspx pour la partie Marketing
    private ArtistClass ArtistC;       //Attribut de type Artiste 
    private int TodayMonth;            //Mois du jour courant
    private int TodayWeek;             //Lasemaine courante
    private int TodayFirstWeek;        //la semaine du 1er jour dans le mois courant
    private int TodayNumWeek;          //la semaine du jour en cours(de 1 à 4)
    private DateTime Today;            //la date d'aujoudhui
    
    private MarketingTableAdapter MarketingTableAdapter;     //Table Adapter qui contient les informations des enregistrements de Marketing
    private EMIRapportDataSet.MarketingDataTable MarketingData;

    #region Constructeur
    /// <summary>
    /// Constructeur
    /// <returns>
    ///  None
    /// </returns>
    /// <param name="ArtistId">
    /// Le Guid de L'artiste
    /// </param>
    /// <param name="ProjectId">
    /// Le Guid de l'album
    /// </param>
    /// <param name="TypeIdMarketing">
    /// le type code de l'entity Marketing
    /// </param>
    /// </summary>
    public MarketingClass(string ArtistId, string ProjectId, string TypeIdMarketing, string DetailsTypeCode)
	{
        this.DetailsTypeCode = DetailsTypeCode;
        this.MarketingTypeCode = TypeIdMarketing;
        this.Artist_Id = new Guid(ArtistId);
        this.Project_Id = new Guid(ProjectId);
        this.ArtistC = new ArtistClass(ArtistId, ProjectId);
        this.MarketingTableAdapter = new MarketingTableAdapter();
        this.MarketingData = new EMIRapportDataSet.MarketingDataTable();

        #region Création de la date d'aujourd'hui
        this.DateC = new DateClass();
        this.Today = DateTime.Today;
        this.TodayMonth = Today.Month;
        this.TodayWeek = DateC.NumeroSemaine(Today);
        this.TodayFirstWeek=DateC.NumeroSemaine(Convert.ToDateTime("01" + Today.ToString().Remove(0, 2)));
        this.TodayNumWeek = DateC.localiserSemaine(TodayFirstWeek, TodayWeek);
        #endregion

        try
        {
            MarketingTableAdapter.FillMarketingByArtistId_ProjectId(MarketingData, Project_Id, Artist_Id);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message.ToString());
        }
    }
    #endregion

    #region Méthode pour la construction de la liste des Marketings
    /// <summary>
    /// Méthode pour la construction de la liste des Marketings
    /// <returns>
    ///  Void
    /// </returns>
    /// <param name="T">
    /// L'ID du Tableau Marketing Dans la page Aspx
    /// </param>
    /// <param name="TofWeek">
    /// L'ID du Tableau des Weekend
    /// </param>
    /// </summary>
    public void DisplayMarketingTable(HtmlTable T,HtmlTable[] TofWeek)
    {
        
        Int32 StarRow = 0;                   //Compteur qui parcoure le DataTable des Marketing

        NbRows = MarketingData.Rows.Count;  //Nombre de ligne dans la DataTable de MARKETING

        #region Boucle qui parcoure le DataTable des Marketing et Lance l'affichage dans la page Aspx
        for (StarRow = 0; StarRow < NbRows; StarRow++)
        {
            HtmlTableRow Maligne = new HtmlTableRow();  //Nouvelle ligne
            HtmlTableCell MaCase = new HtmlTableCell(); //Nouvelle case
            MaCase.Style.Add(HtmlTextWriterStyle.Color, "#3f4b68");  
           // MaCase.InnerText = MarketingData.Rows[StarRow].ItemArray[1].ToString(); //Affectation du texte d'un enregistrement Marketing dans la case

            MaCase.InnerHtml = "&nbsp;<img src=\"ico_Arrow_R.gif\"/>"+" " + MarketingData.Rows[StarRow].ItemArray[1].ToString();
            Maligne.Attributes.Add("id", string.Concat("Marke", StarRow));

            Maligne.Cells.Add(MaCase);
            Maligne.Style.Add(HtmlTextWriterStyle.FontStyle, "Tahoma, 10");
            T.Rows.Add(Maligne);
            MarketingGuid = new  Guid(MarketingData.Rows[StarRow].ItemArray[0].ToString());
            MarketingTitle =  MarketingData.Rows[StarRow].ItemArray[1].ToString();
            budget =  MarketingData.Rows[StarRow].ItemArray[4].ToString();
            
            //Date debut d'une Marketing
            StringDateDeb = MarketingData.Rows[StarRow].ItemArray[3].ToString();
            
            DateDeb = Convert.ToDateTime(MarketingData.Rows[StarRow].ItemArray[3].ToString());

            //Date de Fin d'une Marketing
            StringDateFin = MarketingData.Rows[StarRow].ItemArray[2].ToString();
            DateFin = Convert.ToDateTime(MarketingData.Rows[StarRow].ItemArray[2].ToString());
            
            //Mois de début
            DebMois = DateDeb.Month;
            //Mois de fin
            FinMois = DateFin.Month;

            #region Traittement de calcule de Nombre de semaine totale pour l'enregistrement en cours
            NumSDeb_Ann = DateC.NumeroSemaine(DateDeb);
           // MessageBox.Show("NumSDeb_Ann " + NumSDeb_Ann.ToString());
            NumS1er_J_Deb_Ann = DateC.NumeroSemaine(Convert.ToDateTime("01" + DateDeb.ToString().Remove(0, 2)));
           // MessageBox.Show("NumS1er_J_Deb_Ann " + NumS1er_J_Deb_Ann.ToString());
            NumS1er_J_Fin_Ann = DateC.NumeroSemaine(Convert.ToDateTime("01" + DateFin.ToString().Remove(0, 2)));

            NumSFin_Ann = DateC.NumeroSemaine(DateFin);
          //  MessageBox.Show("NumS1er_J_Fin_Ann " + NumS1er_J_Fin_Ann.ToString());
          //  MessageBox.Show("NumSFin_Ann " + NumSFin_Ann.ToString());
            
           
            if (NumSFin_Ann < NumS1er_J_Fin_Ann)
            {
                NumSFin_Ann = NumS1er_J_Fin_Ann + 4;
            }
            Nbs = NumSFin_Ann - NumSDeb_Ann;
            DebSemaine = DateC.localiserSemaine(NumS1er_J_Deb_Ann, NumSDeb_Ann);
            //MessageBox.Show("DebSemaine " + DebSemaine.ToString());
            
            FinSemaine = DateC.localiserSemaine(NumS1er_J_Fin_Ann, NumSFin_Ann);
           // MessageBox.Show("FinSemaine " + FinSemaine.ToString());
            
            #endregion
            
            //Nbs = Nbs + 1;
           // MessageBox.Show(Nbs.ToString());
            //Appel a la fonction qui affiche une ligne de marketing
            DisplayMarketingLigne(DebSemaine, FinSemaine, Nbs, DebMois-1 , FinMois-1 , MarketingGuid, TofWeek, StarRow,string.Concat("Marke",StarRow.ToString()));
        }
        #endregion
       // Marketing
    }
    #endregion

    #region Méthode pour la construction d'une ligne de Marketing
    /// <summary>
    /// Méthode pour la construction d'une ligne de Marketing
    /// <returns>
    ///  Void
    /// </returns>
    /// <param name="SdebT">
    /// Le numéro de la semaine de début de la ligne (de 1 à 4)
    /// </param>
    /// <param name="SfinT">
    ///  Le numéro de la semaine de Fin de la ligne (de 1 à 4)
    /// </param>
    /// <param name="NombreSemaine">
    /// Nombre de semaine Totale entre SdebT et SfinT de la ligne
    /// </param>
    /// <param name="Moisdeb">
    /// Mois de début de la ligne (de 1 à 12)
    /// </param>
    /// <param name="Moisfin">
    /// Mois de début de la ligne (de 1 à 12)
    /// </param>
    /// <param name="IndexGuid">
    /// Guid du Marketing en cours (Utilisée pour l'ouverture du formulaire CRM)
    /// </param>
    /// <param name="NumLigneCourante">
    /// Numéro de ligne courante (Utilisée pour savoir la couleur choisie de ligne:Bleu ou bleu claire)
    /// </param>
    /// </summary>
    private void DisplayMarketingLigne(Int32 SdebT, Int32 SfinT, Int32 NombreSemaine, Int32 Moisdeb, Int32 Moisfin, Guid IndexGuid,HtmlTable[] TofWeek,int NumLigneCourante,string Prefix)
    {
        Int32 IndexMois = 0;
        Int32 K;
        //MessageBox.Show(Moisdeb.ToString());
        #region Parcourir les Mois avant le Mois de début
        for (K = 0; K < Moisdeb; K++)
        {
            //MessageBox.Show("Avant");
            if (K == (TodayMonth - 1))
            {
                PutCellsIntoTableEmpty(TofWeek[K], true,K,Prefix);
            }
            else
            {
                PutCellsIntoTableEmpty(TofWeek[K], false, K, Prefix);
            }
        }
        #endregion

        #region Parcourir les mois concerner(les mois coloré)
        for (IndexMois = Moisdeb; IndexMois <= Moisfin; IndexMois++)
        {
           // MessageBox.Show(IndexMois.ToString());
            if (IndexMois == Moisdeb && NombreSemaine >= 4)
            {
                //MessageBox.Show("H1");
                if (IndexMois == (TodayMonth - 1))
                {
                    PutCellsIntoTable(TofWeek[IndexMois], SdebT, 4, IndexGuid, NumLigneCourante, true,IndexMois, Prefix);
                }
                else
                {
                    PutCellsIntoTable(TofWeek[IndexMois], SdebT, 4, IndexGuid, NumLigneCourante, false, IndexMois, Prefix);
                }

            }
            else if (IndexMois == Moisdeb && NombreSemaine < 4)
            {
               // MessageBox.Show("H1");
                if (IndexMois == (TodayMonth - 1))
                {
                    PutCellsIntoTable(TofWeek[IndexMois], SdebT, SfinT, IndexGuid, NumLigneCourante, true, IndexMois, Prefix);
                }
                else
                {
                    PutCellsIntoTable(TofWeek[IndexMois], SdebT, SfinT, IndexGuid, NumLigneCourante, false, IndexMois, Prefix);
                }

            }

            if (IndexMois > Moisdeb && IndexMois < Moisfin)
            {
                if (IndexMois == TodayMonth - 1)
                {
                    PutCellsIntoTable(TofWeek[IndexMois], 1, 4, IndexGuid, NumLigneCourante, true, IndexMois, Prefix);

                }
                else
                {
                    PutCellsIntoTable(TofWeek[IndexMois], 1, 4, IndexGuid, NumLigneCourante, false, IndexMois, Prefix);

                }
            }
            if (IndexMois == Moisfin && Moisdeb!=Moisfin)
            {
                if (IndexMois == TodayMonth - 1)
                {
                    PutCellsIntoTable(TofWeek[IndexMois], 1, SfinT, IndexGuid, NumLigneCourante, true, IndexMois, Prefix);

                }
                else
                {
                    PutCellsIntoTable(TofWeek[IndexMois], 1, SfinT, IndexGuid, NumLigneCourante, false, IndexMois, Prefix);

                }

            }
        }
        #endregion

        #region Parcourir les mois aprés le mois de fin
        for (K = Moisfin + 1; K <= 11; K++)
        {
            if (K == (TodayMonth - 1))
            {
                PutCellsIntoTableEmpty(TofWeek[K], true, K, Prefix);
            }
            else
            {
                PutCellsIntoTableEmpty(TofWeek[K], false, K, Prefix);
            }
        }
        #endregion
    }
    #endregion

    #region Méthode qui remplie les cellules des mois vide
    /// <summary>
    /// Méthode qui remplie les cellules des mois vide
    /// <returns>
    ///  Void
    /// </returns>
    /// <param name="T">
    /// L'ID du Tableau de semaine dans la page Aspx
    /// </param>
    /// <param name="ToDayM">
    ///  True si le Tableau de semaine (T) appartient au mois de la date d'aujourd'hui si non false
    /// </param>
    /// </summary>
    protected void PutCellsIntoTableEmpty(HtmlTable T,bool ToDayM,int NumDetailMois,string Prefix)
    {
        HtmlTableRow Maligne = new HtmlTableRow();
        for (Int32 i = 0; i < 4; i++)
        {
            #region Création d'une cellule qui contient la date d'aujourd'hui si le numéro de week = i
            if (ToDayM == true && (i==(TodayNumWeek-1)))
            {
                HtmlTableCell MaCase = new HtmlTableCell();
                MaCase.Style.Add(HtmlTextWriterStyle.Color, "#dd0000");
                MaCase.InnerText = "|";
                Maligne.Cells.Add(MaCase);
                MaCase.Attributes.Add("onMouseOver", "InfoBulleToDay()");
            }
            #endregion

            #region Création d'une cellule normale
            else
            {
                HtmlTableCell MaCase = new HtmlTableCell();
                MaCase.Style.Add(HtmlTextWriterStyle.Color, "#eef0f6");
                MaCase.InnerText = "-";
                Maligne.Cells.Add(MaCase);
            }
            #endregion

        }
        Maligne.Attributes.Add("id", string.Concat(Prefix, NumDetailMois));
        T.Rows.Add(Maligne);
    }
    #endregion

    #region Méthode qui remplie les cellules dans un Tableau de semaine qui appartient a un mois donnée
    /// <summary>
    /// Méthode qui remplie les cellules dans un Tableau de semaine qui appartient a un mois donnée
    /// <returns>
    ///  Void
    /// </returns>
    /// <param name="T">
    /// L'ID du Tableau de semaine d'un mois donnée dans la page Aspx
    /// </param>
    /// <param name="Sdeb">
    ///  Numéro de la semaine de début (1 à 4)
    /// </param>
    /// <param name="Sfin">
    /// Numéro de la semaine de fin (1 à 4)
    /// </param>
    /// <param name="IndexGUID">
    /// Guid de l'enregistrement Marketing,Utiliser pour l'ouverture du formulaire CRM aprés le OnClick sur une cellule
    /// </param>
    /// <param name="NumLigneCourante">
    /// Numéro de la ligne en cours,utiliser pour différencier les ligne en bleu ou bleu claire
    /// </param>
    /// <param name="ToDayM">
    /// True si T apprtient a un mois de la date d'aujourd'hui si non False
    /// </param>
    /// </summary>
    protected void PutCellsIntoTable(HtmlTable T, Int32 Sdeb, Int32 Sfin, Guid IndexGUID, int NumLigneCourante, bool ToDayM,int NumDetailMois,string Prefix)
    {
        HtmlTableRow Maligne = new HtmlTableRow();
        Int32 D;
        Int32 i = 0;
        int FolowToDayWeek=0;
        string Titre = "Marketing";
        string IntervalDate = "Du "+StringDateDeb+ " au " +StringDateFin;
        string Budget = budget + " Euro";
        string Album = ArtistC.GetAlbum(); ;


#region Afficher les Cellules vide qui se trouve avant la semaine de début
        D = (Sfin - Sdeb) +1;
        //MessageBox.Show(D.ToString());
        for (i = 0; i < Sdeb - 1; i++)
        {
            HtmlTableCell MaCase = new HtmlTableCell();
            if (ToDayM == true && (i == (TodayNumWeek-1)))
            {
                MaCase.Style.Add(HtmlTextWriterStyle.Color, "#dd0000");
                MaCase.InnerText = "|";
                MaCase.Attributes.Add("onMouseOver", "InfoBulleToDay()");
            }
            else
            {
                MaCase.Style.Add(HtmlTextWriterStyle.Color, "#e3e3e3");
                MaCase.InnerText = "-";
            }
            Maligne.Attributes.Add("id", string.Concat(Prefix, NumDetailMois));
            Maligne.Cells.Add(MaCase);
        }
#endregion

        FolowToDayWeek = i;
        T.Rows.Add(Maligne);

#region Afficher les Cellules qui contiennent de l'information
        for (i = 0; i < D; i++)
        {
            HtmlTableCell MaCase = new HtmlTableCell();
            HtmlTable Macase1 = new HtmlTable();
            Maligne.Attributes.Add("id", string.Concat(Prefix, NumDetailMois));
            Maligne.Attributes.Add("OnClick", "FormulaireCRM('" + IndexGUID.ToString() + "','" + MarketingTypeCode + "','" + DetailsTypeCode + "','" + Artist_Id.ToString() + "','" + Project_Id.ToString() + "')");
            Maligne.Attributes.Add("onMouseOver", "InfoBulle('" + Titre + "','" + MarketingTitle + "','" + IntervalDate + "','" + Budget + "','" + Album + "')");
            if (NumLigneCourante % 2 == 0)
            {
                MaCase.BgColor = "#749eff";
                MaCase.Style.Add(HtmlTextWriterStyle.Color, "#749eff");
            }
            else
            {
                MaCase.BgColor = "#99ccff";
                MaCase.Style.Add(HtmlTextWriterStyle.Color, "#99ccff");
            }

            if (ToDayM == true && (FolowToDayWeek == (TodayNumWeek - 1)))
            {
                //MessageBox.Show("TodayNumWeek-2 " + TodayNumWeek.ToString());
                MaCase.Style.Add(HtmlTextWriterStyle.Color, "#dd0000");
                MaCase.InnerText = "|";
                MaCase.Attributes.Add("onMouseOver", "InfoBulleToDay()");
                Maligne.Cells.Add(MaCase);
            }
            else
            {
                MaCase.InnerText = "-";
                //MaCase.InnerHtml = "<table ><tr><td style=\"background-color:Red\"/>-</td></tr></table>";
                Maligne.Cells.Add(MaCase);
            }
            FolowToDayWeek++;
        }
#endregion


        FolowToDayWeek = FolowToDayWeek + i;
        T.Rows.Add(Maligne);

#region Afficher les cellules vide qui se trouve aprés la semaime de fin
        for (i = 0; i < (4 - Sfin); i++)
        {
            HtmlTableCell MaCase = new HtmlTableCell();
            if (ToDayM == true && (FolowToDayWeek == (TodayNumWeek - 1)))
            {
                MaCase.Style.Add(HtmlTextWriterStyle.Color, "#dd0000");
                MaCase.InnerText = "|";
                MaCase.Attributes.Add("onMouseOver", "InfoBulleToDay()");
            }
            else
            {
                MaCase.Style.Add(HtmlTextWriterStyle.Color, "#e3e3e3");
                MaCase.InnerText = "-";
            }

            Maligne.Cells.Add(MaCase);
            Maligne.Attributes.Add("id", string.Concat(Prefix, NumDetailMois));
            FolowToDayWeek++;
        }
#endregion
        T.Rows.Add(Maligne);
    }
    #endregion

    public int GetMarketingRowsNember()
    {
        return NbRows;
    }
}
  • signaler à un administrateur
    Commentaire de jesusonline le 14/04/2008 13:40:12 administrateur CS

    Pourquoi construire un HtmlTable de cette façon ? Pourquoi ne pas utiliser un gridview ?
    Pour moi c'est plus un exemple de ce qu'il ne faut pas faire plutot que de ce qu'il faut faire.

    PS : merci de mettre une description plus complète de ta source

  • signaler à un administrateur
    Commentaire de danious le 16/04/2008 16:37:16

    Je suis du même avis. En plus, en enlevant les lignes de code commentées inutiles, en utilisant mieux les classes générées avec les DataSet typés (comme EMIRapportDataSet.MarketingRow) et en compressant un peu les tests divers, on aurait un code 3 fois moins long et bien plus lisible. Et même avec ça, je ne vois toujours pas l'intérêt.

  • signaler à un administrateur
    Commentaire de medclubiste le 21/04/2008 09:30:50

    Je partage votre avis  en ce qui concerne la lisibilité du code mais je pense que ça peut etre utile en cas ou on veut que l'affichage des composant de notre page se fait dynamiquement on peut par exemple se baser sur ce code pour faire un formulaire dynamique qui  
    prend ces champs a partir d'un base donnée .

Ajouter un commentaire

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Boutique

Boutique de goodies CodeS-SourceS