begin process at 2012 02 10 20:11:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C#

 > 

Archives

 > 

Au secours

 > 

Problème de liste


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de liste

lundi 16 mai 2005 à 18:12:37 | Problème de liste

ellandebasque

Bonjour,
j'ai un problème pour ajouter des éléments dans une collection : tousles éléments sont égaux. Grâce au débogueur (pas-à-pas) j'ai constatéque lors de l'ajout d'un élément tous les éléments étaient modifiés parcelui qui est ajouté. Donc tous les éléments de ma liste sont égaux audernier élément ajouté. Comme si les éléments de la liste faisaientréférence à la même case mémoire ;-)


while(reader.read())
{
                   int id =(int)Convert.ToInt32(reader["id_vitrine"]);

                    DateTime dbt;
                   dbt = new DateTime(dt.Year, dt.Month,dt.Day, dt.Hour, dt.Minute, dt.Second);

                    DateTime fin;
                   fin = (DateTime)reader["date_fin"];

                    DateTime locked;
                   locked = (DateTime)reader["date_locked"];

                    int actif;
                   actif =Convert.ToInt32(reader["actif"].ToString());

                    int css;
                   css = Convert.ToInt32(reader["id_css"]);

                  vc.Add(new Vitrine(id, dbt, fin, locked, actif, css));
}
        public int Add( Vitrine value )
        {
            //value = newVitrine(value.Id, value.date_dbt, value.date_fin, value.date_locked,value.actif, value.css);
            //return (List.Add( value ));
            return(List.Add(new Vitrine(value.Id, value.date_dbt, value.date_fin,value.date_locked, value.actif, value.css)));
        }

Merci d'avoir pris le temps de me lire. Si vous avez une solution ouune idée, je vous en remercie par avance de me laisser un petit message.


------------  code complet --------------------

Le premier bout de code se trouve dans Vitrine.cs dans la focntion GetAllVitrines()

Vitrine.cs

using System;
using System.Collections;
using System.Data.SqlClient;

namespace ManagerVitrines.Classes
{
    //*********************************************************************
    //
    // Classe Vitrine
    //
    // Represente une Vitrine
    //
    //*********************************************************************

    public class Vitrine
    {

        /*** PRIVATE FIELDS ***/

        private static int            _id_vitrine;
        private static DateTime     _date_dbt;
        private static DateTime     _date_fin;
        private static DateTime     _date_locked;
        private static int            _actif;
        private static int            _id_css;

        private static Global gl = new Global();

        /*** CONSTRUCTEUR ***/

        public Vitrine(int id, DateTimedate_dbt, DateTime date_fin, DateTime date_locked, int iActif, intiCss)
        {
            // Validate Mandatory Fields//
            if (id < 0 || id.ToString() == null)
                throw (new ArgumentOutOfRangeException("id"));

            _id_vitrine = id;
            _date_dbt = date_dbt;
            _date_fin = date_fin;
            _date_locked = date_locked;
            _actif = iActif;
            _id_css = iCss;
        }

        public Vitrine()
        {}

        /*** PROPRIETES ***/

        public int Id
        {
            get {return _id_vitrine;}
        }


        public DateTime date_dbt
        {
            get
            {
               if (_date_dbt.ToString() == null ||_date_dbt.ToString().Length==0)
                    return DateTime.Now;
                else
                    return _date_dbt;
            }
            set {_date_dbt = value;}
        }


        public DateTime date_fin
        {
            get
            {
               if (_date_fin.ToString() == null ||_date_fin.ToString().Length==0)
                    return DateTime.Now;
                else
                    return _date_fin;
            }
            set {_date_fin = value;}
        }

        public DateTime date_locked
        {
            get
            {
               if (_date_locked.ToString() == null ||_date_locked.ToString().Length==0)
                    return DateTime.Now;
                else
                    return _date_locked;
            }
            set {_date_locked = value;}
        }

        public int actif
        {
            get {return  _actif;}
            set {_actif = value;}
        }

        public int css
        {
            get {return _id_css;}
            set {_id_css = value;}
        }

        /*** INSTANCE METHOD  ***/

        public bool Delete()
        {
            if (gl.connect2sql(gl.connDev))
            {
               string strReq = "delete from v_vitrine (nolock)where id_vitrine = " + _id_vitrine;
               string strReturnValue =gl.connDev.excuteCommand(strReq);
                if (strReturnValue == "true")
                    return true;
                else
                    return false;
            }
            else
                return false;
        }

        public bool Save()
        {
            if(gl.connect2sql(gl.connDev))
            {
                string strReq = "update v_vitrine";
                strReq += " set id_css = '" + _id_css + "',";
                strReq += " set date_dbt = '" + _date_dbt + "',";
                strReq += " set date_fin = '" + _date_fin + "',";
               strReq += " set date_locked = '" + _date_locked +"',";
                strReq += " set actif = '" + _actif + "'";
               strReq += " where id_vitrine = '" + _id_vitrine +"'";
               string strReturnValue =gl.connDev.excuteCommand(strReq);
                if (strReturnValue == "true")
                    return true;
                else
                    return false;
            }
            else
                return false;
        }


        /*** STATIC METHODS ***/

        public static bool DeleteVitrine (int iVitrineId)
        {
            bool bValue = false;
            if (iVitrineId > 0)
            {
               string strReq = "delete from v_vitrine (nolock)where id_vitrine = " + iVitrineId.ToString();
            }

            return bValue;
        }


        public static VitrineCollection GetAllVitrines()
        {
            VitrineCollection vc = new VitrineCollection();
            if(gl.connect2sql(gl.connDev))
            {
                string strReq = "select * from v_vitrine";
               SqlDataReader reader =gl.connDev.executeCommandReader(strReq);
                int iCompteur = 0;
                while(reader.Read())
                {
                   int id =(int)Convert.ToInt32(reader["id_vitrine"]);

                    DateTime dbt;
                   if (reader["date_dbt"].ToString()!= "")
                    {
                       DateTime dt =Convert.ToDateTime(reader["date_dbt"]);
                       dbt = newDateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second);
                    }
                    else
                       dbt = newDateTime(1999, 01, 01, 0, 0, 0, 0);

                    DateTime fin;
                   if (reader["date_fin"].ToString()!= "")
                       fin =(DateTime)reader["date_fin"];
                    else
                       fin = newDateTime(1999, 01, 01, 0, 0, 0, 0);

                    DateTime locked;
                   if(reader["date_locked"].ToString() != "")
                       locked =(DateTime)reader["date_locked"];
                    else
                       locked = newDateTime(1999, 01, 01, 0, 0, 0, 0);

                    int actif;
                   if (reader["actif"].ToString() !="")
                       actif =Convert.ToInt32(reader["actif"].ToString());
                    else
                        actif = -1;

                    int css;
                   if (reader["id_css"].ToString()!= "")
                       css =Convert.ToInt32(reader["id_css"]);
                    else
                        css = -1;

                   vc.Add(new Vitrine(id, dbt, fin,locked, actif, css));
                  //vc.Add(Convert.ToInt32(reader["id_vitrine"]),Convert.ToDateTime(reader["date_dbt"]),Convert.ToDateTime(reader["date_fin"]),Convert.ToDateTime(reader["date_locked"]),Convert.ToInt32(reader["actif"].ToString()),Convert.ToInt32(reader["id_css"].ToString()));
                    iCompteur++;
                }
                reader.Close();
                return vc;
            }
            else
                return null;
        }


        public static Vitrine GetVitrineById(int  iVitrineId)
        {
            if (gl.connect2sql(gl.connDev))
            {
                try
                {
                   string strReq = "select * fromv_vitrine (nolock) where id_vitrine = '" + iVitrineId + "'";
                   SqlDataReader reader =gl.connDev.executeCommandReader(strReq);
                    reader.Read();
                   Vitrine v = newVitrine((int)reader["id_vitrine"], (DateTime)reader["date_dbt"],(DateTime)reader["date_fin"], (DateTime)reader["date_locked"],(int)reader["actif"], (int)reader["id_css"]);
                    reader.Close();
                    return v;
                }
                catch(Exception e)
                {
                    Console.WriteLine(e.Message);
                    return null;
                }
            }
            else
                return null;
        }

        /*
        public static VitrineCollection GetVitrineByMemberUsername(string username)
        {

        }

        public static bool RemoveUserFromVitrine(int userId, int VitrineId)
        {

        }
        */
       
        public static bool CloneVitrine(int VitrineId, string VitrineName)
        {
            if (gl.connect2sql(gl.connDev))
            {
               string strReq = "insert into v_vitrine (id_css,date_dbt, date_fin, date_locked, actif)";
                strReq += " values ";
                strReq += "('" + _id_css + "'";
                strReq += ",'" + _date_dbt + "'";
                strReq += ",'" + _date_fin + "'";
                strReq += ",'" + _date_locked + "'";
                strReq += ",'" + _actif + "')";
               string strReturnValue =gl.connDev.excuteCommand(strReq);
                if (strReturnValue == "true")
                    return true;
                else
                    return false;
            }
            else
                return false;
        }
    }
}

VitrineCollection.cs

using System;
using System.Collections;
//using ASPNET.StarterKit.IssueTracker.DataAccessLayer;

namespace ManagerVitrines.Classes
{
    //*********************************************************************
    //
    // Classe VitrineCollection
    //
    //*********************************************************************

    public class VitrineCollection : CollectionBase 
    {
        public enum VitrineFields
        {
            id_vitrine,
            date_dbt,
            date_fin,
            date_locked,
            actif,
            type
        }


        public void Sort(VitrineFields sortField, bool isAscending)
        {
            switch (sortField)
            {
                case VitrineFields.date_dbt:
                   InnerList.Sort(newdate_dbtComparer());
                    break;
                case VitrineFields.date_fin:
                   InnerList.Sort(newdate_finComparer());
                    break;
                case VitrineFields.date_locked:
                   InnerList.Sort(newdate_lockedComparer());
                    break;
                case VitrineFields.actif:
                   InnerList.Sort(newactifComparer());
                    break;
            }
            if (!isAscending) InnerList.Reverse();
        }


        private sealed class date_dbtComparer : IComparer
        {
            public int Compare(object x, object y)
            {
                Vitrine first = (Vitrine) x;
                Vitrine second = (Vitrine) y;
                return first.date_dbt.CompareTo(second.date_dbt);
            }
        }


        private sealed class date_finComparer : IComparer
        {
            public int Compare(object x, object y)
            {
                Vitrine first = (Vitrine) x;
                Vitrine second = (Vitrine) y;
                return first.date_fin.CompareTo(second.date_fin);
            }
        }


        private sealed class date_lockedComparer : IComparer
        {
            public int Compare(object x, object y)
            {
                Vitrine first = (Vitrine) x;
                Vitrine second = (Vitrine) y;
               returnfirst.date_locked.CompareTo(second.date_locked);
            }
        }

        private sealed class actifComparer : IComparer
        {
            public int Compare(object x, object y)
            {
                Vitrine first = (Vitrine) x;
                Vitrine second = (Vitrine) y;
                return first.actif.CompareTo(second.actif);
            }
        }

        public Vitrine this[ int index ] 
        {
            get  { return( (Vitrine) List[index] );}
            set  { List[index] = value;}
        }
       
        // ne fonctionne pas : passage par référence --> pb
        // faut passer la vitrine par valeur
        public int Add( Vitrine value )
        {
            //value = newVitrine(value.Id, value.date_dbt, value.date_fin, value.date_locked,value.actif, value.css);
            return (List.Add( value ));
            //return(List.Add(new Vitrine(value.Id, value.date_dbt, value.date_fin,value.date_locked, value.actif, value.css)));
        }

        public int Add(int iId, DateTimedtdate_dbt, DateTime dtdate_fin, DateTime dtdate_locked, int iactif,int icss)
        {
            Vitrine v =new Vitrine(iId, dtdate_dbt, dtdate_fin, dtdate_locked, iactif, icss);
            return List.Add(v);
        }

        public int IndexOf( Vitrine value )
        {
            return( List.IndexOf( value ) );
        }

        public void Insert( int index, Vitrine value )
        {
            List.Insert( index, value );
        }

        public void Remove( Vitrine value )
        {
            List.Remove( value );
        }

        public bool Contains( Vitrine value )
        {
            // If value is not of type Vitrine, this will return false.
            return( List.Contains( value ) );
        }

        protected override void OnInsert( int index, Object value )
        {
            if (value.GetType() != Type.GetType("ManagerVitrines.Classes.Vitrine") )
               throw new ArgumentException( "value must be of typeVitrine.", "value" );
        }

        protected override void OnRemove( int index, Object value )
        {
            if (value.GetType() != Type.GetType("ManagerVitrines.Classes.Vitrine") )
               throw new ArgumentException( "value must be of typeVitrine.", "value" );
        }

        protected override void OnSet( int index, Object oldValue, Object newValue )
        {
            if (newValue.GetType() != Type.GetType("ManagerVitrines.Classes.Vitrine") )
               throw new ArgumentException( "newValue must be oftype Vitrine.", "newValue" );
        }

        protected override void OnValidate( Object value )
        {
            if (value.GetType() != Type.GetType("ManagerVitrines.Classes.Vitrine") )
               throw new ArgumentException( "value must be of typeVitrine." );
        }
    }
}

De
lundi 16 mai 2005 à 18:27:46 | Re : Problème de liste

coq

Administrateur CodeS-SourceS
Réponse acceptée !

Salut,

public class Vitrine
    {

        /*** PRIVATE FIELDS ***/

        private static int            _id_vitrine;
        private static DateTime     _date_dbt;
        private static DateTime     _date_fin;
        private static DateTime     _date_locked;
        private static int            _actif;
        private static int            _id_css;

Les champs statiques sont communs à toutes les instances de la classe Vitrine, donc à chaque fois que tu le modifie c'est pour toutes les instances :-)



Cocoricoooooooo !!!!
coq
MVP Visual C#



Cette discussion est classée dans : date, int, id, value, vitrine


Répondre à ce message

Sujets en rapport avec ce message

vérifier si une date est égal à un jour [ par fabian86 ] bonjour,J'ai 2 tables, une première qui m'informe sur les jours de consultation et les heures.elle contient (int id, varchar jour, varchar heure_deb, Est ce possible ??? [ par arouche ] Bonjour,Je debute en C# et je voudrais savoir s'il est possible de faire la chose suivante :Imaginons le scenario suivant :    2 tables dans la base d correspondance entre date et string [ par ahmedcsharp ] Salut,je suis en train d'executer la requete suivante :string sql="select * from table1   where   (date) between '"+(this.txt_date.Value)+"' and  '"+( Insertion dans une table à partir des controles d'une fenetre [ par maitesn1 ] Salut tout le monde,j'aimerai avoir de l'aide car depuis deux jours je bloque sur ce probleme.Je souhaiterai, a partir d'une fenetre, récupérer les el Parsing dans un classe générique ??? [ par YOOP ] Bonjour tout le monde,J'ai un soucis concernant une classe générique. (c'est mon premier test avec ce genre de classe).Voici :public class Paramètre   affichage date et heure [ par gzitoun ] Bonjour, je voudrais simplement SVP savoir ce que je dois modifier dans mon code pour recevoir la date comme il faut: je m explique: pour aujourd hui List.Binarysearch [ par olibara ] Bonjour,Je voudrais faire une recherche dans une liste triée par constructionCette liste contient un tableau de structuresstruct MyStuct{  int Id;  in Programme pour ouvrir des images en C [ par nico2910 ] Bonjour à tous,je suis débutant en langage C mais je me suis un peu formé à l'API Windows et je suis arrivé à faire un petit programme pour ouvrir une Gérer une liste comme une table [ par _osiris_ ] BonjourQuel est le meilleur moyen pour gérer une liste d'objet, un peu comme une table ?J'ai créé une structure du type:class personne int id string Toujour un truc qui gene !! [ par aposfa ] bonsoir en fait je réalise un sudoku tout fonctionne tres bien sauf deux trucs bien génant !! 1er probleme : j'ai créer une fonction pour enregistre


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales