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éer des Checkbox dynamiquement


Sujet :

C#

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Créer des Checkbox dynamiquement
    Bonjour,

    je suis entrain de faire un petit site web, et à un moment je dois mettre une checkbox à la fin de chaque ligne d'un tableau dont le nombre de lignes n'est pas connu à l'avance ... du coup je génère ça en C# comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int j = 0;
    while (j < 10)
    {
    // code que j'ai pas affiché, parce que ça n'a rien à voir avec les checkbox
    CheckBox box = new CheckBox();
    box.ID = "CheckBox" + j.ToString();
    this.Controls.Add(box); 
    j++;
    }
    Le problème, c'est que quand je lance le programme, ça me met un message d'erreur :

    "La collection a été modifiée ; l'opération d'énumération peut ne pas s'exécuter."

    Si quelqu'un a une idée, merci beaucoup

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,

    L'erreur que tu as veut dire que tu modifie une collection (liste, dictionnaire ...) alors que tu es entrain de l'énumérer, de la parcourir.

    En gros faire ça =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    List<Truc> liste = new List<Truc>();
    liste.Add(new Truc("un truc"));
    liste.Add(new Truc("un autre truc"));
     
    foreach(Truc t in liste)
    {
        Console.WriteLine(t.ToString());
        liste.Remove(t);                    //Erreur ici, car on modifie une liste que l'on est entrain de parcourir.
    }
    provoquera la même erreur.

    Donc dans ton cas tu ajoutes une checkBox à ta collection de Control, je pense donc que tu fais ceci au mauvais moment... je ne sais pas trop, il faudrait avoir plus de code, ou en tout cas savoir ou est ce bout de code.

    bon code,
    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    merci de ta réponse, mais je comprend pas trop comment je pourrai la parcourir alors que je ne fais que créer de nouvelles checkbox !

    ça c'est le code complet dans lequel je créer les checkbox :

    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
    public void disp_line_table(string dir)
        {
            Bdd bdd = new Bdd();
            string[][] tab = bdd.TakeBac_dir(Session["2"].ToString(), dir);
            int j = 0;
            CheckBox box = new CheckBox();
     
            while (tab[j] != null)
            {
                string str = "<tr><th>" + tab[j][1] + "</th><th>" + "Bac Classique" + "</th><th>" + tab[j][6] + "</th><th>" + tab[j][7] + "</th><th>" +
                             tab[j][4] + "</th><th>" + tab[j][5] + "</th><th>" + tab[j][8] + "</th><th>" + "<label><input type=\"checkbox\" id=\"" + "CheckBox" + j.ToString() +  "\" value=\"premiere_checkbox\"></label><br>"
     + "</th><th>";
                Response.Write(str);
                Response.Write("</th></tr>");
                CheckBox box = new CheckBox();
                box.ID = "CheckBox" + j.ToString();
                this.Controls.Add(box); 
                j++;
            }
        }

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Je ne suis pas un développeur web , donc comme toi je comprends pas bien ton problème...
    Il n'empêche que je suis sur de ce que signifie ce message d'erreur, peut être que sans le savoir ta méthode est appelée lors d'une énumération de this.Controls...

    Essaye peut être de trouver de l'aide dans le forum développement web .net....

    Désolé,
    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  5. #5
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 541
    Points
    10 541
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Je vais dans le sens de J@ckHerror. Je pense que ta méthode est appelée dans un contexte où this.Control est énumérée (via un foreach, un iterateur, etc...).

    Il faudrait regarder la hiérarchie d'appel et voir s'il n'y a pas le parcours de cette énumération qui traîne quelque part...
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

Discussions similaires

  1. Procédure Stockée pour créer des TABLE dynamiquement
    Par GuyverZ dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 12/05/2009, 22h29
  2. Réponses: 2
    Dernier message: 17/11/2006, 07h29
  3. Creér des Clip dynamiquement dans la scène
    Par jpboogie dans le forum Flash
    Réponses: 2
    Dernier message: 04/10/2006, 16h47
  4. Réponses: 5
    Dernier message: 06/09/2006, 13h15
  5. Réponses: 2
    Dernier message: 14/07/2006, 14h24

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