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 :

problème d'ajout dans une listBox [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 18
    Points : 10
    Points
    10
    Par défaut problème d'ajout dans une listBox
    Bonjour tout le monde,

    J'ai une page qui contient des critères pour afficher ensuite un rapport dans un report viewer. J'ai un lien qui m'affiche une autre page sous forme de popup qui contient autant de case à cocher que de département contenu dans la base de données. Lorsque l'utilisateur coche les départements et valide, je veux récupérer sa sélection. J'ai fait pas mal de recherches et j'ai testé pas mal de chose. J'ai choisi d'enregistrer les données dans un string et d'appeler une méthode qui est dans la page parente pour sauvegarder la liste des départements :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    [code contenu dans mon bouton valider de ma nouvelle fenetre)
     
    foreach (ListItem lt in cblDep.Items)
                {
                    if (lt.Selected)
                    {
                        ltDep += lt.Value + ";";
                    }
                }
     
    StatsEntreprisesFiltresForm entForm = new StatsEntreprisesFiltresForm();
    entForm.recupDonnees(ltDep);
    et je récupère la liste comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            public void recupDonnees(string donnees)
            {
                cbDep = donnees;
                string[] dep = cbDep.Split(';');
     
                foreach (string d in dep)
                {
                    ListItem item = new ListItem();
                    item.Text = d;
                    item.Value = "item" + d;
                    ListBox1.Items.Add(item);
                }            
            }
    Le problème est qu'a l'exécution de mon application j'ai un message d'erreur quand je veux ajouter l'item dans ma listBox.
    Voici le message d'erreurs :
    La référence d'objet n'est pas définie à une instance d'un objet.
    Je ne vois pas pourquoi il me met ça alors que ce n'est pas la première fois que j'ajoute des items.

    Merci et bonne journée

  2. #2
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Après avoir effectué des tests j'ai trouvé d'où venait mon problème : Les données ne s'affichent pas bien qu'elles soient enregistrées dans une variable. Cela vient du fait que ma nouvelle fenêtre est ouverte (enfin je suppose). Alors je me suis dis que si j'enregistrais les données, que je fermais la fenêtre et que je rechargeais la page appelante peut-être que je pourrais afficher les données dans la listBox. Ma question est maintenant comment puis-je fermer ma page? J'ai essayé de mettre du javascript mais je ne sais pas comment ça fonctionne en c# vu que je débute. Avez-vous une solution à me proposer?

    Merci et bonne journée.

    Pour info sur ma page parente j'ouvre la nouvelle page grâce un lien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="ListeDepartements.aspx" target="_blank" onclick="window.open(this.href, width=800, height=300, resizable=0); return false;">Regrouper par département</a>
    Dans la page ListeDepartements.aspx et plus précisément dans le code du bouton valider j'utilise ceci à la suite du code précédent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    StringBuilder csText = new StringBuilder();
    csText.Append("<script type=\"text/javascript\"> window.opener.refresh();");
    csText.Append("</script>");
    ClientScript.RegisterClientScriptBlock(GetType(), "ButtonClickScript", csText.ToString());
    Le problème c'est que ce bout de script me génère une erreur et je crois qu'il ne trouve pas la page parente quelqu'un aurait une idée car la je sèche complètement.

    Merci.

  3. #3
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Quel est le message d'erreur ?
    En informatique, le problème se situe toujours entre le clavier et l'écran !
    Il y a deux chemins entre le clavier et l'écran : Par l'UC et par l'utilisateur.

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Au niveau de window.opener.refresh visual studio me dit ceci :
    Erreur d'exécution Microsoft JScript: Cet objet ne gère pas cette propriété ou cette méthode.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    J'ai repris de zéro mon code, j'ai crée une page webform sans page maître (ce que j'avais à l'origine pour la liste des départements) et dans cette page je peux ajouter du JavaScript. J'ai repris le code que j'avais sur la page anciennement créée et maintenant mon soucis est comment je peux ajouter ce bout de code JavaScript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    opener.location.reload();
    dans ma méthode valider?

    Merci.

    Je suis désolée de vous embêter encore avec ça. J'ai réussi à afficher le code JavaScript dans ma page donc ça fonctionne bien, ma page parente est rechargée. Le hic est que ma valeur n'est plus sauvegardée. J'ai essayé plein de chose du genre appeler la méthode de la page parente pour enregistrer la valeur dans une variable ou ceci :
    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
    [Formulaire contenant la liste des département]
    protected void btnValider_Click(object sender, EventArgs e)
    {            
         hideValue();
     
         StringBuilder csText = new StringBuilder();
         csText.Append("<script type=\"text/javascript\"> opener.location.reload();window.close();");
         csText.Append("</script>");
         ClientScript.RegisterClientScriptBlock(GetType(), "ButtonClickScript", csText.ToString());
    }
     
    public void hideValue()
    {
          if (cblDep != null)
          {              
              foreach (ListItem lt in cblDep.Items)
              {
                  if (lt.Selected)
                  {
                       ltDep += lt.Value + ";";
                   }
               }
               hideDep.Value = ltDep;
           }
    }
    Dans ma page parente quand je veux récupérer la valeur de mon champs caché ou bien quand j'appelle la méthode hideValue, le champs est à null.

    Je ne sais pas si je suis assez clair dans ma demande, mais si si vous avez besoin de plus de précision n’hésitez pas à me le demander.

    merci.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    C'est bon j'ai résolu mon problème : il me manquait une variable de session pour enregistrer mes données d'une page à l'autre.
    Si ça peut aider quelqu'un, voici mon code fonctionnel :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    [Code de la liste des départements : ]
    protected void btnValider_Click(object sender, EventArgs e)
    {            
             foreach (ListItem lt in cblDep.Items)
             {
                 if (lt.Selected)
                 {
                     ltDep += lt.Value + ";";
                 }
              }
     
              Session["listeDep"] = ltDep;
     
              StringBuilder csText = new StringBuilder();
              csText.Append("<script type=\"text/javascript\"> opener.location.reload();window.close();");
              csText.Append("</script>");
              ClientScript.RegisterClientScriptBlock(GetType(), "ButtonClickScript", csText.ToString());
            }
     
    [code de la page appelante : ]
    protected void Page_Load(object sender, EventArgs e)
    {
       ...
        if (Session["listeDep"] != null)
        {
            cbDep = Session["listeDep"].ToString();
            recupDonnees();
        }
    }
     
    public void recupDonnees()
    {
        if (cbDep != null)
        {
            string[] dep = cbDep.Split(';');
     
            if (dep != null)
            {
                foreach (string d in dep)
                {
                    if (d != "")
                    {
                        ListItem item = new ListItem();
                        item.Text = d;
                        item.Value = "item" + d;
                        ListBox1.Items.Add(item);
                     }
                  }       
              }
         }
     
    }
    Et voilà.
    Bonne fin de journée à tous

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

Discussions similaires

  1. Ajouter dans une listbox en utilisant un bouton
    Par soumer dans le forum Interfaces Graphiques
    Réponses: 12
    Dernier message: 03/07/2011, 23h02
  2. Problème d'ajout dans une liste
    Par topgun1223 dans le forum C
    Réponses: 4
    Dernier message: 23/03/2010, 18h06
  3. Réponses: 2
    Dernier message: 01/03/2010, 21h32
  4. Problème d'affichage dans une listbox
    Par swap_nibble dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 25/01/2008, 17h29
  5. Problème de sélection dans une listbox
    Par cacahuèèète dans le forum Access
    Réponses: 3
    Dernier message: 29/06/2006, 15h03

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