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 :

impossible de récupérer la valeur de mon textbox


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 30
    Points : 24
    Points
    24
    Par défaut impossible de récupérer la valeur de mon textbox
    Bonjour à tous,
    aujourd'hui j'essaie de gérer une modification.
    En faite:
    -lors de l'évènement page_load, je récupère des informations dans ma base que j'affiche dans la textbox.
    -l'utilisateur modifie la valeur de la textbox
    -lors de l'évènement button_click, je suis censé récupérer la nouvelle valeur de la textbox pour effectuer la modification

    Pb: lorsque je fais mes test, quand je debug, la textbox a pour valeur la première valeur(celle récupérée dans la base) lors de l'évènement button_click
    je n'arrive donc pas à récupérer la nouvelle valeur de la textbox

    Je vous remercie de bien vouloir m'aider par avance.

    je vous mets 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
     
        protected void Button1_Click(object sender, EventArgs e)
            //Bouton enregistrer
        {
     
            if (TextBox2.Text != "")
            {
                //-----------------------------------------------------------------------------------------------------------
                //                                  Modification de la question
                //-----------------------------------------------------------------------------------------------------------
     
     
                //création de la chaine de connexion
                SqlConnection myConnectionString = new SqlConnection("blabla");
     
                //on récupère l'id de la question passé par l'adresse
                if (Request.QueryString["val"] != "")
                {
     
                    //on vérifie si l'id récupéré correspond bien à la question écrite dans la textbox
                    string id_q = Request["val"];
                    SqlCommand marequete = new SqlCommand("SELECT id_question, question FROM tquestions WHERE id_question="+ id_q, myConnectionString);
     
                    Response.Write(" l'id est:" + id_q);
     
                    //création du dataAdapter et du dataSet
                    SqlDataAdapter adapter = new SqlDataAdapter();
                    adapter.SelectCommand = marequete;
                    adapter.SelectCommand.Connection = myConnectionString;
                    adapter.SelectCommand.Connection.Open();
                    DataSet dset = new DataSet();
     
                    adapter.Fill(dset);                
     
    //c'est ici qu'il a la mauvaise valeur(textbox2.text a la valeur récupérée dans la base)
                    dset.Tables[0].Rows[0][1] = TextBox2.Text; 
     
     
                    SqlCommandBuilder cmdBld = new SqlCommandBuilder(adapter);
                    adapter.Update(dset);

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    je me demande si il ne faut pas appeler la méthode Validate() de ta form au début de ta méthode....


    Mais ca m'étonne...

    Edit:
    j'ai testé sans Validate(), et ca marche bien chez moi avec un simple textbox + bouton

    Ton probleme ne vient pas d'un mauvais binding ?

    J'ai pas d'idée...

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par alavoler Voir le message
    je me demande si il ne faut pas appeler la méthode Validate() de ta form au début de ta méthode....


    Mais ca m'étonne...

    Edit:
    j'ai testé sans Validate(), et ca marche bien chez moi avec un simple textbox + bouton

    Ton probleme ne vient pas d'un mauvais binding ?

    J'ai pas d'idée...
    Euh ca changerait quoi? Validate c pas juste un test?
    Ca marche chez toi oké. C'est déjà ca lol.
    Jte mets le reste de mon code ya ptèt un endroit ou ca bloque. Mais depuis ce matin je galère pour trouver la raison.

  4. #4
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par alavoler Voir le message
    je me demande si il ne faut pas appeler la méthode Validate() de ta form au début de ta méthode....


    Mais ca m'étonne...

    Edit:
    j'ai testé sans Validate(), et ca marche bien chez moi avec un simple textbox + bouton

    Ton probleme ne vient pas d'un mauvais binding ?

    J'ai pas d'idée...
    Voici mon code:
    je sais que je ne code pas super bien, par ex que j'aurais pu faire des classes pour les connexions mais ca je verrai après.
    Je ne mets pas la fonction Page_load, je pense que ce n'est pas nécessaire

    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
     
     
    protected void Button1_Click(object sender, EventArgs e)
            //Bouton enregistrer
        {
     
     
            if (TextBox2.Text != "")
            {
                //                                  Modification de la question
     
     
     
                //création de la chaine de connexion
                SqlConnection myConnectionString = new SqlConnection("blabla");
     
                //on récupère l'id de la question passé par l'adresse
                if (Request.QueryString["val"] != "")
                {
     
     
                    //on vérifie si l'id récupéré correspond bien à la question écrite dans la textbox
                    string id_q = Request["val"];
                    SqlCommand marequete = new SqlCommand("SELECT id_question, question FROM tquestions WHERE id_question=" + id_q, myConnectionString);
     
     
                    Response.Write(" l'id est:" + id_q);
     
                    //création du dataAdapter et du dataSet
                    SqlDataAdapter adapter = new SqlDataAdapter();
                    adapter.SelectCommand = marequete;
                    adapter.SelectCommand.Connection = myConnectionString;
                    adapter.SelectCommand.Connection.Open();
                    DataSet dset = new DataSet();
     
                    adapter.Fill(dset);
     
                    //modification de la ligne
                    dset.Tables[0].Rows[0][1] = TextBox2.Text;
     
     
                    SqlCommandBuilder cmdBld = new SqlCommandBuilder(adapter);
                    adapter.Update(dset);
     
                    //fermeture de la base
                    adapter.SelectCommand.Connection.Close();
     
                    myConnectionString.Close();
     
     
                }
                else
                {
                    //Nouvel enregistrement//
     
                    //                   Recherche du dernier identifiant question pour création du suivant
                    //-----------------------------------------------------------------------------------------------------------
                    SqlConnection myConnectionString = new SqlConnection("blabla");
                    DataSet data = new DataSet();
                    myConnectionString.Open();
                    string rqt = "SELECT MAX(id_question) FROM tquestions;";
                    SqlDataAdapter sda = new SqlDataAdapter(rqt, myConnectionString);
                    sda.Fill(data);
     
                    string id_question = data.Tables[0].Rows[0][0].ToString();
     
     
                    myConnectionString.Close();
     
     
     
                    //  Récupération et Enregistrement des Réponses à la question
     
                    int i = 3;
                    while (i <= 12 && Request.Form["ctl00$ContentPlaceHolder1$TextBox" + i] != "")
                    {
                        if (TextBox3.Text != "")
                        {
     
                            SqlCommand cmd2 = new SqlCommand("SELECT * FROM treponses WHERE id_reponse='" + Request["id_reponse"] + "'");
     
                            //création du dataAdapter et du dataSet
                            SqlDataAdapter da2 = new SqlDataAdapter();
                            da2.SelectCommand = cmd2;
                            da2.SelectCommand.Connection = myConnectionString;
                            da2.SelectCommand.Connection.Open();
                            DataSet ds2 = new DataSet();
     
                            //On stocke les données récupérées par le data adapter dans le dataset
                            da2.Fill(ds2);
     
                            //création de la nouvelle ligne
                            DataRow dr2 = ds2.Tables[0].NewRow();
     
                            //passage des valeurs au datarow
                            dr2[1] = id_question;
                            dr2[2] = Request.Form["ctl00$ContentPlaceHolder1$TextBox" + i];
     
                            ds2.Tables[0].Rows.Add(dr2);
                            SqlCommandBuilder cmdBld2 = new SqlCommandBuilder(da2);
                            da2.Update(ds2);
     
     
                            //fermeture de la connection
                            da2.SelectCommand.Connection.Close();
     
                        }
     
                        //incrémentation de i pour passer a la textbox suivante
                        i = i + 1;
                    }
     
                }
            }
     
        }

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    Apparament le problème venait du fait qu'il y ait un viewstate dans ma page.
    En faite il enregistre toutes les valeurs des controles utilisés.
    Sachant que lors de l'évènement button_click, l'évènement page_load est relu, il gardait la valeur initiale de ma textbox.
    Pour palier à ce problème, il faut faire un if !page.ispostback dans le page_load, la ou on donne la première valeur a notre textbox.text
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
             if (!Page.IsPostBack)
                    {
                        myTextBox.Text = sqlDr2["question"].ToString();
                    }

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

Discussions similaires

  1. Réponses: 23
    Dernier message: 05/05/2010, 16h59
  2. [AJAX] Impossible de récupérer les valeurs en Post
    Par Tommyl dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/06/2007, 20h30
  3. [PEAR][HTML_QuickForm] Impossible de récupérer les valeurs du formulaire
    Par Mainman dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 29/05/2007, 12h15
  4. Réponses: 9
    Dernier message: 12/05/2006, 09h06
  5. Réponses: 4
    Dernier message: 14/10/2005, 16h34

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