begin process at 2012 05 28 03:37:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive ASP & ASP.NET

 > 

Archives ASP & ASP.NET

 > 

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 à 16:40:25 | Problème de liste

ellandebasque

Bonjour,
j'ai un problème pour ajouter des éléments dans une collection : tous les é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 par celui qui est ajouté. Donc tous les éléments de ma liste sont égaux au dernier élément ajouté. Comme si les éléments de la liste faisaient ré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 = new Vitrine(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 ou une idée, je vous en remercie par avance de me laisser un petit message.

De
lundi 16 mai 2005 à 16:59:36 | Re : Problème de liste

jesusonline

Membre Club Administrateur CodeS-SourceS
On peut voir le code entier ? c'est quoi que ton List.Add le List ? il vient d'ou ?

et en faisant

public void Add(Vitrine value) 
   List.Add(value);

le Add de ta List c'est pas celui que tu codes ? sinon tu tombes dans une boucle et ca va pas marcher :p


Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
lundi 16 mai 2005 à 17:14:42 | Re : Problème de liste

ellandebasque

public void Add(Vitrine value) 
   List.Add(value);

--> c ce ke j'avais testé initialement.

Voici mes deux classes.

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, DateTime date_dbt, DateTime date_fin, DateTime date_locked, int iActif, int iCss)
        {
            // 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 = new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second);
                    }
                    else
                        dbt = new DateTime(1999, 01, 01, 0, 0, 0, 0);

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

                    DateTime locked;
                    if (reader["date_locked"].ToString() != "")
                        locked = (DateTime)reader["date_locked"];
                    else
                        locked = new DateTime(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 * from v_vitrine (nolock) where id_vitrine = '" + iVitrineId + "'";
                    SqlDataReader reader = gl.connDev.executeCommandReader(strReq);
                    reader.Read();
                    Vitrine v = new Vitrine((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(new date_dbtComparer());
                    break;
                case VitrineFields.date_fin:
                    InnerList.Sort(new date_finComparer());
                    break;
                case VitrineFields.date_locked:
                    InnerList.Sort(new date_lockedComparer());
                    break;
                case VitrineFields.actif:
                    InnerList.Sort(new actifComparer());
                    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;
                return first.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 = new Vitrine(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, DateTime dtdate_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 type Vitrine.", "value" );
        }

        protected override void OnRemove( int index, Object value )
        {
            if ( value.GetType() != Type.GetType("ManagerVitrines.Classes.Vitrine") )
                throw new ArgumentException( "value must be of type Vitrine.", "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 of type Vitrine.", "newValue" );
        }

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

De
lundi 16 mai 2005 à 17:48:11 | Re : Problème de liste

jesusonline

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Arf, C# j'ai jamais trop touché à ca, et ca fait un bail que j'ai pas fait de collection en VB, ca fait plus de 6 mois que je bosse en .net 2 et donc j'utilises les genrerics pour faire une collection d'objet :)

bref, j'ai peut etre cette article qui pourrait t'aider : [ Lien ] 

si tu trouves pas, va voir sur www.csharpfr.com on va surement te répondre rapidement :)


Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr


Cette discussion est classée dans : date, id, value, datetime, reader


Répondre à ce message

Sujets en rapport avec ce message

recupération de la date du jour [ par suzy26 ] J'ai crée des formulaires d'enregistrement, de modification et de suppression. Dans la cas d'un enregistrement, j'ai dans ma base de données un champs Problème de trigger en SQL server [ par diabolooo ] Salut à tous,j'ai une table dans une base SQL server qui comporte 4 champs (id, date, heure, mesure)la clé primaire est composée des champs id, date, OPTIMISATION [ par Jackboy ] J'aimerai qu'un "pro" de l'optimisation puisse me regularisé et optimisé ce code... Pas nécessaire de tout passer a la loupe, mais si vous trouvé des pb update [ par bootchoz ] bonjour,j'effectue un update sur 1 gridview (3 champs de date) mais rien ne se passe.voila ma requete :CREATE PROCEDURE UpdateRole @wwid_pers varchar( Microsoft OLE DB Provider for ODBC Drivers error '80004005' [ par oriviera ] IAORANA[font=Lucida Voilà 15 jours que je galère, j'ai essayé des tas de scripts proposés sur le net mais rien ne marche voilà mon code pourtant simpl Récuperer la partie DATE d'un champ DATETIME dans un SELECT [ par ypothier ] Bonjour J'espère qu'un d'entre vous peut m'aider. Je fais un select de ma BD(SQL SERVER) et à l'intérieur j'ai un champ DATETIME. Mais quand j'arrive Garder la valeur saisie dans mon formulaire [ par Synergienne ] J'ai un formulaire alimenté à partir d'une requète de tables , on peut choisir une date dans la liste déroulante proposé et la date selectionné n'est erreur sur le pointage vers une fonction dans une propriété textbox si valeur nulle [ par equinoxe83 ] Bonjour,J'ai un (un autre ...) Pb sur un textbox dont la valeur est nullLe contexte :Un textbox à l'intérieur d'un formview bindé sur le champs date d Une histoire de ViewState [ par sebmafate ] Bonjour à tous,Voici un problème qui m'occupe depuis quelques heures :Pour un site, j'ai bindé un GridView avec un ObjectDataSource personnalisé comme DateTime sur un projet .NET [ par neo_2000 ] Bonjour,J'ai une application web .NET sur un serveur. J'utilise ,dans le code compilé un DateTime.now(). Lors de l'appel sur une machine cliente , est


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,998 sec (3)

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