IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

List qui se vide en sortie de procédure [Débutant]


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 63
    Points : 44
    Points
    44
    Par défaut List qui se vide en sortie de procédure
    Bonjour,

    Oui encore moi, mais j'ai quelque peine sur les problèmes les plus simple et impossible de trouver de solution à chaque fois..

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public struct Etiquette
        {
            public string code;
            public string dési1;
            public string dési2;
            public string dési3;
            public string zone;
            public string rack;
            public string etagere;
        }
        public partial class MainPage : System.Web.UI.Page
        {
            List<Etiquette> ListeFinal =new List<Etiquette>();
         [...]
           public void remplirListeArt(ref List<Etiquette> ListeFinal)
            {
            [...]
                        LArt.dési1 = ListFinal.GetString(4).ToString();
                        LArt.code = ListFinal.GetString(3).ToString();
                        LArt.dési2 = ListFinal.GetString(5).ToString();
                        LArt.dési3 = ListFinal.GetString(5).ToString();
                        LArt.zone = ListFinal.GetString(0).ToString();
                        LArt.rack = ListFinal.GetString(1).ToString();
                        LArt.etagere = ListFinal.GetString(2).ToString();
                        ListeFinal.Add(LArt);
                    }
                    i++;
                }
                conn.Close();
            }
       }
    Voila, donc j'arrive à remplir ma liste aucun problème, seulement lorsque je souhaite utiliser cette même liste dans une autre procédure la liste est vide, pourtant je l'initialise bien dans le main de ma page.

    Je suppose que ca doit être encore une erreur bête mais je ne la trouve pas

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par FruitSellers Voir le message
    pourtant je l'initialise bien dans le main de ma page.
    Qu'est-ce que tu appelles le "main de ta page" ? Il n'y a pas de "main" en ASP.NET...

    A mon avis c'est juste un problème de gestion du cycle de vie de la page, il faut le faire au bon moment : ASP.NET Page Life Cycle Overview.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    D'accord, ça veut dire que lorsque la page se recharge, toutes les variables se réinitialisent?

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Tout à fait, l'état des variables n'est pas conservé lors du rechargement d'une page (PostBack), d'où le fait que ta liste soit vide

    Il faut donc que tu appelles ta méthode remplirListeArt dans l'évènement Page_Load par exemple, en faisant quelque chose de ce genre :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)    // On ne rentre là-dedans que lors du premier chargement de la page
        {
            // Ensuite on remplit la liste, il faut donc bien l'avoir initialisée au préalable
            this.remplirListeArt(ListeFinal);
        }
    }
    A voir selon ton besoin, mais ça te donne déjà l'idée...
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    Alors, je viens d'essayer ce que tu m'as proposé, la liste se vide toujours.

    D'autant que maintenant avec ma procédure pour remplir la liste dans le Page_Load se lance des le démarrage.

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Oui après il faut adapter à ton cas, j'ai juste donné un exemple

    Il faut noter que quand tu initialises ton membre directement, comme ceci :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public partial class MainPage : System.Web.UI.Page
    {
        List<Etiquette> ListeFinal =new List<Etiquette>();
        ...
    }
    A chaque fois, cela va vider ta liste... Donc il faut peut-être déplacer l'initialisation dans l'évènement Init par exemple...

    Si tu veux plus d'aide, il va falloir que tu détailles ton besoin...
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    L'évenement Init?

    J'ai réussi à "tricher" on va dire, en rappelant la procédure qui remplis ma liste dans une autre procédure qui avait besoin de cette même liste mais bon

    Je dois avoué être vraiment perdu, je pensais plus à une histoire de POST comme en Php afin de transfert ma liste d'une page à l'autre (enfin la même page mais recharger), mais cela ne doit pas être la logique qui s'applique à ASP.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    J'ai trouvé une solution, certes vraiment pas propre mais ca dépanne.

    En faite j'ai un textbox que je n'affiche pas sur ma page et qui me permet de transférer les données de mes variables entre chaque chargement de page.

  9. #9
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    PHP et ASP.NET n'ont strictement rien en commun. Quand tu es en ASP.NET, il faut perdre les réflexes que tu as acquis sur PHP. De plus, il faut maîtriser un minimum le cycle de vie des pages (voir le lien plus haut), afin de réaliser les actions au bon moment. Si tu souhaites plus d'aide, n'hésite pas à poster plus de code et à expliquer ce que tu veux faire.

    Concernant l'évènement Init, il s'agit d'un des premiers évènements appelés lors du cycle de vie de la page ASP.NET. En général c'est là qu'on initialise les différents controls. Ensuite il y a quelques autres évènements, puis on atteint l'évènement Load, dans lequel on va pouvoir binder les controls, etc. Tout ceci est expliqué dans un tableau sur le lien que j'ai donné plus haut.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  10. #10
    Membre confirmé

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Points : 574
    Points
    574
    Par défaut
    Citation Envoyé par FruitSellers Voir le message
    J'ai trouvé une solution, certes vraiment pas propre mais ca dépanne.

    En faite j'ai un textbox que je n'affiche pas sur ma page et qui me permet de transférer les données de mes variables entre chaque chargement de page.
    Cette technique s'appelle le ViewState en ASP.NET
    "C'est tellement merdique que toute modification est une amélioration !"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/06/2010, 09h25
  2. [AC-2003] Colonne qui apparait vide dans liste
    Par nicburger dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/04/2009, 10h49
  3. Réponses: 1
    Dernier message: 22/02/2009, 19h34
  4. [AJAX] 3 liste lièes en Ajax dont une qui reste vide
    Par mimotin dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 19/08/2008, 20h40
  5. Réponses: 1
    Dernier message: 23/04/2007, 19h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo