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

C# Discussion :

création des DDLs par une boucle for


Sujet :

C#

  1. #21
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    protected void Page_Init ????

    C'est dans le Page_Load.

    Et mets un if(!Page.IsPostBack) qui englobe les boucles for d'ajout des ListItem dans les DropDownList.

    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
     
    protected void Page_Load(object sender, EventArgs e) {
     
       for (int i = 0; i < 3; i++) {
     
          Label ch = new Label();
          ch.Text = "Chambre" + (i + 1).ToString();
          Panel_chbre.Controls.Add(ch);
     
          DropDownList nbreAD = new DropDownList();
          nbreAD.ID = "nbreAD" + i.ToString();
          Panel_adulte.Controls.Add(nbreAD);
     
          DropDownList nbreENF = new DropDownList();
          nbreENF.ID = "nbreENF" + i.ToString();
          Panel_enf.Controls.Add(nbreENF);
     
          if(!Page.IsPostBack) {
             for (int j = 1; j < 4; j++) {
                ListItem item = new ListItem(j.ToString(), j.ToString());
                nbreAD.Items.Add(item);
             }
             for (int j = 0; j < 4; j++) {
                ListItem item = new ListItem(j.ToString(), j.ToString());
                nbreENF.Items.Add(item);
             }
          }
     
       }
     
    }

  2. #22
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    j'ai essayé avec les deux page_init e page _load (car j'ai besoin de ce code donc il faux essayer avec tous)

    si je met le test de ispostback dans une page_load
    un msg d'erreur est affiché sur cet ligne

    Code :
    string nbreAD1 = ((DropDownList)Panel_adulte.FindControl("nbreAD1")).Text;La référence d'objet n'est pas définie à une instance d'un objet.


    si je met cet ligne dans un test de ispostback, aprés le click sur le bouton le panel nbreAD est disparu

  3. #23
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Kaidan ta solution ne marchera pas. Il faut créer les controles avant le page_load, car c'est entre le page_init et le page_load que les valeurs qui reviennent du client sont "insérées" dans les contrôles. Avec ta solution toutes les DDL auront toujours la valeur d'initialisation...

    sophiesophie, sincèrement il va falloir revoir les bases, de programmation en ce qui concerne la déclaration de variable ou la POO, de visual studio pour trouver seule comment corriger les erreurs basiques, de .net puis enfin d'asp.net. Par ce qu'à ce rythme on va pas s'en sortir.

  4. #24
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Citation Envoyé par Sphax Voir le message
    Kaidan ta solution ne marchera pas. Il faut créer les controles avant le page_load, car c'est entre le page_init et le page_load que les valeurs qui reviennent du client sont "insérées" dans les contrôles. Avec ta solution toutes les DDL auront toujours la valeur d'initialisation...
    Il va falloir que je cherches pourquoi ça fonctionne dans mes applications alors.

    En plus, la MSDN (cycle de vie d'une page ASP.NET) précise que : La Page appelle la méthode d'événement OnLoad sur la Page, puis effectue la même opération de manière récursive pour chaque contrôle enfant, qui fait de même pour chacun de ses contrôles enfants jusqu'à ce que la page et tous les contrôles soient chargés.

    Dur dur dans ce cas (à mon humble avis toujours) "d'insérer" les valeurs dans les contrôles qui ne sont pas encore chargés entre le Page_Init et le Page_Load. Il serait plus logique que lors de l'appel de l'événement OnLoad sur chaque contrôle, celui-ci aille "fouiller" dans le ViewState pour voir si il y a des données le concernant (avec le même ID) et s'initialiser avec la bonne valeur.

  5. #25
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    bonjour ,
    Mr kaidan si on ajoute le test de "ispostback" les DDLs ne sont pas reconnus dans l'action du bouton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string nbreAD1 = ((DropDownList)Panel_adulte.FindControl("nbreAD1")).Text;
    erreur::La référence d'objet n'est pas définie à une instance d'un objet.
    qu'est ce qu'on va faire ?

  6. #26
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Et tu l'ajoutes où ce IsPostBack ?

    Parce que même si mes IsPostBack font planter (c'est possible même si je n'y crois pas trop) le code retournerait null et non pas une exception.

  7. #27
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Au temps pour moi, aprés vérification ta solution fonctionne kaidan (la mienne aussi hein ). En fait l'important c'est surtout de ne pas réinitialiser les contrôles lors d'un postback, mais de bien les recréer qd même.

  8. #28
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 57
    Points : 36
    Points
    36
    Par défaut
    peut etre hier soir le VS est bloqué c'est pour celà il m'affiche cet erreur.
    je test now avec ce code si dessous. toujours les valeurs récupérées sont 1 et 0

    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
    32
    33
    34
    35
    public partial class reservation2 : System.Web.UI.Page
    {
       protected void Page_Load(object sender, EventArgs e) 
       {
           for (int i = 0; i < 3; i++)
           { 
              Label ch = new Label();
              ch.Text = "Chambre" + (i + 1).ToString();
              Panel_chbre.Controls.Add(ch);
     
              DropDownList nbreAD = new DropDownList();
              nbreAD.ID = "nbreAD" + i.ToString();
              Panel_adulte.Controls.Add(nbreAD);
     
              DropDownList nbreENF = new DropDownList();
              nbreENF.ID = "nbreENF" + i.ToString();
              Panel_enf.Controls.Add(nbreENF);
               if(!Page.IsPostBack) 
              {
                 for (int j = 1; j < 4; j++) {
                    ListItem item = new ListItem(j.ToString(), j.ToString());
                    nbreAD.Items.Add(item);
                 }
                 for (int j = 0; j < 4; j++) {
                    ListItem item = new ListItem(j.ToString(), j.ToString());
                    nbreENF.Items.Add(item);
                 }
            }
     
       }
     protected void poursuivre_Click(object sender, EventArgs e)
      {
    string nbreAD1 = ((DropDownList)Panel_adulte.FindControl("nbreAD1")).Text;
    string nbreENF1 = ((DropDownList)Panel_enf.FindControl("nbreENF1")).Text;
    Response.Redirect("reservation3.aspx?nbreAD1=" + nbreAD1 + "&nbreENF1=" + nbreENF1);
    résultat:
    [IMG]C:\1.jpg[/IMG]
    [IMG]C:\2.jpg[/IMG]
    Images attachées Images attachées   

Discussions similaires

  1. Création d'objets dans une boucle for
    Par urban_p dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/06/2008, 10h34
  2. [Timer] timer bloqué par une boucle for?
    Par Jidefix dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 18/09/2006, 17h12
  3. ouvrire des fichiers par un boucle for
    Par stiko dans le forum C++
    Réponses: 5
    Dernier message: 08/07/2006, 15h14
  4. [MySQL] Traitement des variables d'une boucle for
    Par liryc78 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 06/03/2006, 20h53

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