Tableau d'objet

Résolu
cs_jorrie Messages postés 62 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 23 mai 2007 - 11 oct. 2006 à 11:45
cs_jorrie Messages postés 62 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 23 mai 2007 - 11 oct. 2006 à 19:51
Bonjours, j'aimerais créer un tableau de personne que je stockerais
dans une variable session mais lorsque j'essaie il me met erreur de
reference a l'objet: voici mon code:


//Création d'un tableau d'utilisateur

    Fonctions_Globales.Utilisateur_pilotage[] tab = new Fonctions_Globales.Utilisateur_pilotage[50];


    tab[0].nom="Jerem";   -> ceci me crée l'erreur en question .


//voici ce qui se trouve dans Fonctions_Globales.Utilisateur_pilotage :

public class Utilisateur_pilotage

    {

        private string _Nom;

        private string _Prenom;

        private string _Email;

        private string _Tel_B;

        private string _Tel_P;


        public string Nom

        {

            get {return _Nom;}

            set {_Nom = value;}

        }

12 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
11 oct. 2006 à 17:44
Je sais pas ce que tu cherches à faire mais voici comment je ferrais :

public List Utilisateurs
{
   get
   { 
         return Session["Users"] as List;
   }
   set
   {
         Session["Users"] = value;
    }
}

et ensuite ou que tu sois tu fais un

Utilisateur user = new Utilisateur()
user.truc = "chose";
Utilisateurs.Add(user);

Ensuite si tu veux accéder à cette variable session n'importe ou dans ton site, tu fais un helper donc une classe static que tu met dans le dossier app_code

public static class SessionHelper
{

 public static List Utilisateurs
{
   get
   { 
          List value = System.Web.HttpContext.Current.Session["Users"] as List;
          if (value == null) 
                   value = new List();
   }
   set
   {
          System.Web.HttpContext.Current.Session["Users"] = value;
    }
}

}

Maintenant n'importe ou dans ton code tu peux aceder à cette variable en faisant SessionHelper.Utilisateurs.

Si tu veux rajouter des utilisateurs tu peux utiliser les méthodes de List<> à savoir Add, RemoveAt, Insert, Clear.

<hr />Cyril - MVS - MCP
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
11 oct. 2006 à 12:07
Bonjour,

c'est normal car en faisant new Utilisateur_pilotage[50] tu déclares une variable qui contiendra 50 objets, mais tu ne créer (heureusement) pas 50 objects. Il faut donc que tu le créer avant de lui faire quoi que ce soir donc

tab[0] = new Utilisateur_pilotage();
tab[0].nom = "Jerem";

pour des raisons de perf, je te conseille de faire

Utilisateur u = new Utilisateur();
u.nom = "Jerem";
tab[0] = u;

Cela évitera à ton code d'aller chercher la variable à chaque fois dans le tableau (peut etre que le compilo optimise ca mais pas sur)

Autre détails, généralement on utilise un ArrayList pour ce genre de choses car c'est plus souple (mais peut etre que tu n'en as pas besoin) en .net 2 il y a meme des ArrayList generics on peut donc faire

List us = new List();

Utilisateur u = new Utilisateur();
u.nom = "Jerem";

us.add(u);

<hr />Cyril - MVS - MCP
0
cs_jorrie Messages postés 62 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 23 mai 2007
11 oct. 2006 à 12:17
Ca a l'air de marcher mais j'aimerais stocké ce tableau dans une
variable session et pouvoir ainsi recuperer le nom d'un utilisateur
voivi comment je procede mais ca a pas l'air de marcher:


Session["Membre"]=tab;

.tab = (Fonctions_Globales.Utilisateur_pilotage[])Session["Membre"];

    int i=0;

      while (i<Convert.ToInt32(Session["NB_M"].ToString()))

    {

      LB_ComitePilotage.Items.Add(.tab[i].Nom + " - " + .tab[i].Prenom);

       }


//Sachant que Session["NB_M"] represente le nombre d'utilisateur enregistré

//LB_ComitePILOTAGE represente une list box
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
11 oct. 2006 à 12:40
euh, pourquoi le point de .tab ?

dans ta boucle while, tu n'as pas l'impression qu'il manque qqchose ? comme incrémenter i ?

<hr />Cyril - MVS - MCP
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jorrie Messages postés 62 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 23 mai 2007
11 oct. 2006 à 14:04
J'ai regle les autres problemes mais maintenant il me met cast de la chaine non valide ::


Var.tab = (Fonctions_Globales.Utilisateur_pilotage[])Session["Membre"]; // pour cette ligne
0
cs_jorrie Messages postés 62 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 23 mai 2007
11 oct. 2006 à 14:06
Pour expliquez un peu plus le probleme , j'aimerais recuperer ce que je
viens de mettre dans ma session afin de rajouter un utilisateur et de
conserver les utilisateurs precedemment inserer
0
cs_jorrie Messages postés 62 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 23 mai 2007
11 oct. 2006 à 14:24
je veux bien utiliser un arraylist mais j'arrive a faire resortir un utilsateur de la liste
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
11 oct. 2006 à 16:12
c'est quoi ce var.tab ???

<hr />Cyril - MVS - MCP
0
cs_jorrie Messages postés 62 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 23 mai 2007
11 oct. 2006 à 16:30
var me permet de regrouper toutes mes variables dans une classe que j'instancie
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
11 oct. 2006 à 16:37
et tab ?

il est bien instancié et du meme type que le contenu de ta variable ? c'est bien un tableau avec le bon nombre d'element ?

<hr />Cyril - MVS - MCP
0
cs_jorrie Messages postés 62 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 23 mai 2007
11 oct. 2006 à 16:59
voici comment je declare tab


public Fonctions_Globales.Utilisateur_pilotage[] tab = new Fonctions_Globales.Utilisateur_pilotage[50];

       
0
cs_jorrie Messages postés 62 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 23 mai 2007
11 oct. 2006 à 19:51
Je te remercie beaucoup pour ta rapidité et le tps que tu as passé c cool.j'ai finalement reussi a faire ce que je voulais.Merci beaucoup
0
Rejoignez-nous