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 :

[C#] Récuperer les champs dans une table dynamique apres un clic


Sujet :

ASP.NET

  1. #1
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut [C#] Récuperer les champs dans une table dynamique apres un clic
    alors suite de mes problemes avec ma table...

    je recapitule, ma table est généré dynamiquement. Dedans, j'ai mis une dropDownList, un textBox, et bien sur un bouton, le tout généré dynamiquement

    J'arrive a aller dans ma procedure quand je clik sur le bouton avec en argument mon "i" (mon compteur de boucle).

    Maintenant, j'aimerais dans cette procedure, recuperer ce qu'il y a dans mon textBox, et ce qui est selectioné dans la dropDownList afin de mettre a jour la "i"ieme ligne de ma base de donnée.

    C'est la recuperation des valeurs de mes controles ou je coince.
    J'ai pensé faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    etat.SelectedIndexChanged += new EventHandler(etat_SelectedIndexChanged); // pour la dropDownList
    pour apres dans la procedure appelé, enregistré le contenu dans une variable de session mais j'y arrive po non plus

  2. #2
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    bon ca a pas l'air de vous inspirer...
    sinon j'ai un autre probleme dans le meme genre.
    J'ai aussi un checkbox dans ma table

    Je voudrais que quand je click sur un bouton, cette fois a l'extrerieur de la table et ajouté sur la page aspx, j'arrive a lister tous les "i" de ma boucle dont la checkbox a ete coché.

    Vous suivez? j'ai pensé utilser "CheckedChange" mais pareil, j'y arrive pas...

  3. #3
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Désolé mais tu risques d'être boudé en t'y prenant comme tu le fais; relis toi et tu comprendra pourquoi peu de monde à envie de s'y coller.
    Je te propose de t'aider mais il va falloir remettre un peu d'ordre dans tout cela et surtout me confier le code approprié
    Voilà ce que j'ai compris
    Tu as un Contrôle HTMLTable qui contient d'autres contrôles
    1. Lesquels veux tu retrouver (et quel est leur propriété ID); la piste est FindControl
    Lorsque tu click sur certains boutons tu voudrais obtenir quelques chose
    2. donnes le code de ces procdure Click et formule correctement le resultat attendu

    La balle est dans ton camp

  4. #4
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par neguib
    Désolé mais tu risques d'être boudé en t'y prenant comme tu le fais; relis toi et tu comprendra pourquoi peu de monde à envie de s'y coller
    desolé mais je comprend pas pourquoi, c'est pas mon premier sujet et ca me parraissait claire
    Citation Envoyé par neguib
    Lorsque tu click sur certains boutons tu voudrais obtenir quelques chose
    tu as lu mon post?
    Citation Envoyé par shams
    Maintenant, j'aimerais dans cette procedure, recuperer ce qu'il y a dans mon textBox, et ce qui est selectioné dans la dropDownList afin de mettre a jour la "i"ieme ligne de ma base de donnée
    Citation Envoyé par neguib
    donnes le code de ces procdure Click et formule correctement le resultat attendu
    pour le resultat attendu, je viens de le REdecrire ci-dessus, pour la le code ma procedure, ben je peux te donner l'en tete, mais je pense pas que c'est ce qui vas t'aider a comprendre mon probleme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void envoyer_Command(object sender, CommandEventArgs e)
    {
          // ???
    }
    maintenant ce qui peut t'aider plus pour saisir mon probleme
    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
    // dans le page load 
    // recuperation du dataset 
    System.Data.DataSet dataset = (System.Data.DataSet) Session["dataset"]; 
     
    // creation de la table 
    System.Web.UI.WebControls.Table table; 
     
    // pour chaque entrée de la base 
    for (i=dataset.Tables["resume"].Rows.Count-1 ; i>=0 ; i--) 
    { 
            table = new Table() ; 
            TableRow ligne = new TableRow(); 
     
            // les controls
            Button envoyer = new Button(); 
            envoyer.Text = "Mettre a jour les données"; 
            envoyer.ID = "bouttonEnvoyer";
            TextBox textReponse = new TextBox();
            DropDownList etat = new DropDownList();
            etat.Items.Add(""); 
            etat.Items.Add("en_attente"); 
            etat.Items.Add("resolu");
     
            // la cellule du bouton
            TableCell cell1 = new TableCell(); 
            cell1.Controls.Add(envoyer); 
     
            // la cellule du textBox
            TableCell cell2 = new TableCell(); 
            cell2.Controls.Add(textReponse);
     
            // la cellule de la liste
            TableCell cell3 = new TableCell(); 
            cell3.Controls.Add(etat);         
     
            ligne.Cells.Add(cell1); 
            ligne.Cells.Add(cell2); 
            ligne.Cells.Add(cell3); 
            table.Rows.Add(ligne); 
     
            // et si on clique sur le bouton 
            envoyer.CommandName = "go"; 
            envoyer.CommandArgument = i.ToString();
            envoyer.Command += new CommandEventHandler(envoyer_Command); 
    }

  5. #5
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Salut
    Je suis un peu surpris que tu crées une nouvelle table pour chaque entrée de la base; j'ai donc supposé une erreur (si c'est moi qui me trompe alors il te suffira de remettre l'instanciation dans la boucle
    à vue de nez, je dirais que c'est cela qui peut te poser souci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TextBox textReponse = new TextBox(); 
    DropDownList etat = new DropDownList();
    La déclaration et l'instanciation sont privées, en plus tu ne génère aucune ID unique pour ces contrôles donc la récupération est plus que compromise.
    Je te suggère
    1 Déclarations en variables de classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    protected Button envoyer;
    protected DropDownList etat;
    protected TextBox textReponse;
    2. Et la boucle remise en ordre:
    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
     
     table = new Table() ;
     TableRow ligne;
     TableCell cell1;
     TableCell cell2;
     TableCell cell3;
     
     // pour chaque entrée de la base 
     for (int i = dataset.Tables["resume"].Rows.Count-1 ; i >= 0 ; i--) 
      { 
        ligne = new TableRow(); 
     
        // la cellule du bouton 
        envoyer = new Button(); 
        envoyer.Text = "Mettre a jour les données"; 
        envoyer.ID = "boutonEnvoyer" + i.ToString();
        envoyer.CommandName = "go"; 
        envoyer.CommandArgument = i.ToString(); 
        envoyer.Command += new CommandEventHandler(envoyer_Command);
       cell1 = new TableCell(); 
       cell1.Controls.Add(envoyer); 
     
       // la cellule du textBox 
       textReponse = new TextBox();
       textReponse.ID = "textReponse" + i.ToString();
       cell2 = new TableCell(); 
       cell2.Controls.Add(textReponse);
     
       // la cellule de la liste
       etat = new DropDownList();
       etat.ID  = "etat" + i.ToString(); 
       etat.Items.Add(""); 
       etat.Items.Add("en_attente"); 
       etat.Items.Add("resolu"); 
       cell3 = new TableCell(); 
       cell3.Controls.Add(etat);          
     
       ligne.Cells.Add(cell1); 
       ligne.Cells.Add(cell2); 
       ligne.Cells.Add(cell3); 
       table.Rows.Add(ligne); 
     }
    Maintenant dans ta procedure tu a à ta disposition la méthode FindControl de la Page
    8)

  6. #6
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    ok merci neguib!
    en fait, c'etat presque ce que j'etais en train de faire!
    j'ai enregistré mes tables dans des des varibles de session
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Session[i.ToString()] = table;
    et pour les utiliser:
    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
                private void envoyer_Command(object sender, CommandEventArgs e)
    		{
    			string arg = e.CommandArgument.ToString();
    			string id1, id2;
    			int i = Convert.ToInt32(arg);
     
     
    			// recuperation du dataset et du dataAdapter
    			System.Data.DataSet dataset = (System.Data.DataSet) Session["dataset"];
    			System.Data.OleDb.OleDbDataAdapter dataAdapter = (System.Data.OleDb.OleDbDataAdapter)Session["adapter3"];
     
    			// recuperation des données
    			id1 = "reponse" + arg;
    			id2 = "etat" + arg;
    			Table table = (Table) Session[i.ToString()];
    			TextBox box = (TextBox) table.FindControl(id1);
    			DropDownList list = (DropDownList) table.FindControl(id2); 
     
    			// modification de la base de donnée
    			dataset.Tables["resume"].Rows[i]["solution"] = box.Text;
    			dataset.Tables["resume"].Rows[i]["etat"] = list.SelectedItem.Text;
    			dataset.Tables["resume"].Rows[i]["dateReponse"] = DateTime.Now.ToString();
    			dataset.Tables["resume"].Rows[i]["dernierIntervenant"] = Session["user"].ToString();
     
    			// mise a jour de la base de donnée a partir du dataset
    			dataAdapter.Update(dataset, "resume");
     
    			// effacement et rechargement des données
    			dataset.Clear();
    			dataAdapter.Fill(dataset);
    			Session["dataset"] = dataset;
    			Session["adapter3"] = dataAdapter;
     
    			// et voilou!!	
    			Response.Redirect("pageAdmin.aspx?typeDemande=Toutes");
    		}
    bon j'ai mis tous mon code, parce que j'avais la flemme de le mettre en page!!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/06/2007, 13h45
  2. Réponses: 9
    Dernier message: 05/02/2007, 12h27
  3. Réponses: 6
    Dernier message: 31/07/2006, 16h01
  4. Réponses: 4
    Dernier message: 08/07/2006, 06h36
  5. [MySQL] Supprimer les informations des champs dans une table (suite)
    Par snakejl dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 26/05/2006, 15h37

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