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 :

Événement bouton clic dans une boucle


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2015
    Messages : 98
    Points : 59
    Points
    59
    Par défaut Événement bouton clic dans une boucle
    Bonsoir à tous,

    Voila je cherche la façon d'utiliser l’événement button1_click dans une boucle de code quelconque.
    Dans le code de ma page web j'ai 2 variables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string Laquestion = "c'est vert ?";
    string OuiouNON = "Oui";
    Pour l'exemple j'y est mis des valeurs en dur (mais elles varient de façon dynamique en fonction d'autres paramètres)
    et je les intègre ensuite à une dataTable de la façon suivante:

    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
     
     
    DataTable TheReponse = new DataTable(); // creation datatable
     
                    DataColumn Colon1 = TheReponse.Columns.Add("id", typeof(Int32)); // ajout 4 colonnes
                    Colon1.AllowDBNull = false;
                    Colon1.Unique = true;
     
                    DataColumn Colon2 = TheReponse.Columns.Add("Question", typeof(String));
                    DataColumn Colon3 = TheReponse.Columns.Add("Reponse", typeof(String));
                    DataColumn Colon4 = TheReponse.Columns.Add("Image", typeof(int));
     
                    for (int i = 0; i < 10; i++) // boucle qui ajoute a chaque itération (ici une ligne) les 4 valeurs a la Datatable
                    {
                        DataRow newRow = TheReponse.NewRow(); //creation de ligne
     
                        newRow["id"] = i;
                        newRow["Question"] = Laquestion;
                        newRow["Reponse"] = OuiouNON;
                        newRow["Image"] = 23;
     
     
                        TheReponse.Rows.Add(newRow); // ajout de la ligne au datatable
                    }
                    DataView view = new DataView(TheReponse); // affichage du datatable dans un gridview
                    Rita1.DataSource = view;
                    Rita1.DataBind();
    jusque la tous fonctionne. J'ai voulu par la suite que tous ceci s'affiche après avoir appuyer sur le bouton de ma page et j'ai donc tous mis dans une classe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    protected void Button1_Click(object sender, EventArgs e)
            {}
    ça marche bien. Quant je clic sur le bouton la datatable est générés mais avec 10 fois la même ligne (effet attendu).


    Ce que je voudrais faire c'est qu'a chaque clic sur mon bouton les 4 variables soient afficher sur une seul ligne (et pas 10), stockés, puis qu'a chaque nouveau clic une ligne soit ajouté avec les nouvelles variables, etc... au temps de fois que je clic .

    Dans l'idée j'avais donc imaginé une boucle infini qui s’arrête après chaque clic et qui attend le nouveau clic pour poursuivre. J'ai donc rebasculé tous mon code dans ma classe d'affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    protected void Page_Load(object sender, EventArgs e)
            {}
    Et j'ai regarder un peu la façon de d’intégrer un événement dans du code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Lebouton.Click += new EventHandler(this.Button1_Click);
    A partir de la je suis bloqué, je n'arrive pas à intégrer cet événement à une boucle. Je m'arrache les cheveux la dessus et je commence à me demander si c'est la bonne façon de procéder....


    Merci de votre aide

  2. #2
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2015
    Messages : 98
    Points : 59
    Points
    59
    Par défaut
    Bon j'ai tester autre chose mais rien ne fonctionne.
    C'est peut être tous bete, 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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
     protected void Page_Load(object sender, EventArgs e)
            { string Laquestion = "c'est vert ?"; // juste pour l'exemple, en faite variable dynamique
                    string OuiouNON = "Oui";
     
                    DataTable TheReponse = new DataTable();
                    DataColumn Colon1 = TheReponse.Columns.Add("id", typeof(Int32)); // ajout 4 colonnes
                    Colon1.AllowDBNull = false;
                    Colon1.Unique = true;
     
                    DataColumn Colon2 = TheReponse.Columns.Add("Question", typeof(String));
                    DataColumn Colon3 = TheReponse.Columns.Add("Reponse", typeof(String));
                    DataColumn Colon4 = TheReponse.Columns.Add("Image", typeof(int));
     
                    // pour chaque entrée de la base 
     
     
                    for (int i = TheReponse.Rows.Count; i >= 0; i--)
                    {
                        DataRow newRow = TheReponse.NewRow();
                        //creation de ligne
                        // Set values in the columns:
                        newRow["id"] = i;
                        newRow["Question"] = Laquestion;
                        newRow["Reponse"] = OuiouNON;
                        newRow["Image"] = 23;
     
                        TheReponse.Rows.Add(newRow);
                        Session[i.ToString()] = TheReponse;
     
                        // les controls
                        Button Vebout = new Button();
                        Vebout.Text = "Mettre a jour les données";
                        Vebout.ID = "Vebout";
     
     
                        // et si on clique sur le bouton 
                        Vebout.CommandName = "go";
                        Vebout.CommandArgument = i.ToString();
     
                        Vebout.Command += new CommandEventHandler(Vebout_Command);
     
                        DataView view = new DataView(TheReponse);
                        Rita1.DataSource = view;
                        Rita1.DataBind();
                   }
    }
    et le bouton click

    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
     
     protected void Vebout_Command(object sender, CommandEventArgs e)
            {
                string arg = e.CommandArgument.ToString();
     
                int i = Convert.ToInt32(arg); //bug
     
                // modification de la base de donnée
                DataTable TheReponse = (DataTable)Session[i.ToString()];  // i.ToString --> ne voit pas de quoi je parle
     
                TheReponse.Rows[i]["id"] = i;
                TheReponse.Rows[i]["Question"] = Session["Question"].ToString();
                TheReponse.Rows[i]["Reponse"] = Session["Reponse"].ToString(); ;
                TheReponse.Rows[i]["Image"] = 23;
     
                // effacement et rechargement des données
     
                Session["datatable"] = TheReponse;
     
                Response.Redirect("pagetestEF.aspx?typeDemande=Toutes");
            }
    Je souhaite qu'a chaque clcik sur mon bouton le Gridview Rita1; rajoute une ligne avec l'ID, Laquestion, OuiouNON et un un 4eme truc.
    C'est une sorte de boucle infini breaké par le bouton.

    Merci de votre aide

  3. #3
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2015
    Messages : 98
    Points : 59
    Points
    59
    Par défaut
    j'avance!
    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
     
    // page load
    {
                    if (Session["caca"] == null)
                    {
                        string Laquestion = "c'est vert ?";
                        string OuiouNON = "Oui";
     
     
                        // creation de la table 
                        DataTable TheReponse = new DataTable();
                        DataColumn Colon1 = TheReponse.Columns.Add("id", typeof(Int32)); // ajout 4 colonnes
                        Colon1.AllowDBNull = false;
                        Colon1.Unique = true;
     
                        DataColumn Colon2 = TheReponse.Columns.Add("Question", typeof(String));
                        DataColumn Colon3 = TheReponse.Columns.Add("Reponse", typeof(String));
                        DataColumn Colon4 = TheReponse.Columns.Add("Image", typeof(int));
     
                        // pour chaque entrée de la base 
     
     
                        for (int i = TheReponse.Rows.Count; i >= 0; i--)
                        {
                            DataRow newRow = TheReponse.NewRow();
                            //creation de ligne
                            // Set values in the columns:
                            newRow["id"] = i;
                            newRow["Question"] = Laquestion;
                            newRow["Reponse"] = OuiouNON;
                            newRow["Image"] = 23;
     
                            TheReponse.Rows.Add(newRow);
                            Session["caca"] = TheReponse;
     
                            DataView view = new DataView(TheReponse);
                            Rita1.DataSource = view;
                            Rita1.DataBind();
                        }
                    }
     
                    if (Session["caca"] != null)
                    {
     
                    }
    et le bouton clic
    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
     
     protected void Vebout_Command(object sender, CommandEventArgs e)
            {
                DataTable TheReponse = (DataTable)Session["caca"];
     
                for (int i = TheReponse.Rows.Count; i > 0; i--)
                {
                    TheReponse.Rows.Add(new Object[] { i, "bonjour", "Non", 24 });
     
                    Session["caca"] = TheReponse;
     
                    DataView view = new DataView(TheReponse);
                    Rita1.DataSource = view;
                    Rita1.DataBind();
                }
    Il me reste a essayer de faire comprendre au bouton clic ce que sont { i, "bonjour", "Non", 24 }.
    La c'est un ajout bête en trichant (avec i>0 il fou la paix a ma 1ere ligne dans la boucle ) mais dès que je clic une seconde fois il me dit que la ligne est déja atribuée.
    merci de votre aide

  4. #4
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2015
    Messages : 98
    Points : 59
    Points
    59
    Par défaut
    bon ça avance mais j'ai besoin d'aide pour un dernier détail.
    je clic une fois =1 ligne
    2eme fois =2 ligne....
    Et après c'est la fête, doublement des ligne afficher
    voici le 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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    {
                    string Laquestion = "c'est vert ?";
                    string OuiouNON = "Oui";
     
                    if (Session["caca"] == null)
                    {
                        // creation de la table 
                        DataTable TheReponse = new DataTable();
                        DataColumn Colon1 = TheReponse.Columns.Add("id", typeof(Int32)); // ajout 4 colonnes
                        Colon1.AllowDBNull = false;
     
     
                        DataColumn Colon2 = TheReponse.Columns.Add("Question", typeof(String));
                        DataColumn Colon3 = TheReponse.Columns.Add("Reponse", typeof(String));
                        DataColumn Colon4 = TheReponse.Columns.Add("Image", typeof(int));
     
                        // pour chaque entrée de la base 
     
                        for (int i = TheReponse.Rows.Count; i >= 0; i--)
                        {
                            DataRow newRow = TheReponse.NewRow();
                            //creation de ligne
                            // Set values in the columns:
                            newRow["id"] = i;
                            newRow["Question"] = Laquestion;
                            newRow["Reponse"] = OuiouNON;
                            newRow["Image"] = 23;
     
                            TheReponse.Rows.Add(newRow);
                            Session[i.ToString()] = TheReponse;
     
     
                            // les controls
                            if (this.IsPostBack)
                            {
                                this.Vebout.Command += new CommandEventHandler(Vebout_Command);
                                this.Vebout.CommandArgument = i.ToString();
                            }
                        }
                    }
     
                    if (Session["caca"] != null)
                    {
     
                        DataTable TheReponse = (DataTable)Session["caca"];
     
                        for (int i = TheReponse.Rows.Count-1; i >= 0; i--)
                        {
                            DataRow theRow = TheReponse.NewRow();
                            theRow["id"] = i;
                            theRow["Question"] = Laquestion;
                            theRow["Reponse"] = OuiouNON;
                            theRow["Image"] = 25;
     
                            TheReponse.Rows.Add(theRow);
     
                            Session[i.ToString()] = TheReponse;
     
                        }
                    }
                }
            }
     
            protected void Vebout_Command(object sender, CommandEventArgs e)
            {
                string arg = e.CommandArgument.ToString();
                int i = Convert.ToInt32(arg);
     
                DataTable TheReponse = (DataTable)Session[i.ToString()];
     
                    Session["caca"] = TheReponse;
     
                    DataView view = new DataView(TheReponse);
                    Rita1.DataSource = view;
                    Rita1.DataBind();
                }
     
            }
            }

  5. #5
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2015
    Messages : 98
    Points : 59
    Points
    59
    Par défaut
    resolu

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

Discussions similaires

  1. Bouton "annuler" dans une boucle
    Par buzza01 dans le forum Langage
    Réponses: 2
    Dernier message: 08/08/2011, 20h29
  2. appel de boutons dans une boucle
    Par Ludo_360 dans le forum Delphi
    Réponses: 3
    Dernier message: 02/05/2007, 16h41
  3. Réponses: 14
    Dernier message: 25/06/2006, 19h18
  4. [FLASH 8] Changer label bouton dynamiquement dans une boucle
    Par Malau dans le forum ActionScript 1 & ActionScript 2
    Réponses: 5
    Dernier message: 03/05/2006, 16h55

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