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

 .NET Discussion :

GridView + TextBox + PostBack


Sujet :

.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Points : 62
    Points
    62
    Par défaut GridView + TextBox + PostBack
    Bonjour à vous,

    Alors voilà, j'ai un petit problème sur une application en cours de developpement.

    L'utilisateur choisit tout plein d'option, et en fonction de celles-ci je remplis le gridview, vous devez donc vous doutez que tout est fait par le code behind, plus présisément par une DataTable.

    Le truc c'est que l'utilisateur doit pouvoir éditer certaines (seulement certaines) valeurs de la gridview que je lui affiche. J'ai donc rajouter des TextBox dans cette gridview à partir du RowDataBound. Dans cette fonction je réalise plusieurs vérifications pour savoir ou non si je place mon TextBox.

    En code ça donne ça :

    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
     
    try
            {
                if (e.Row.RowIndex != -1 && e.Row.RowIndex < 12)
                {
                    if (DateEdit(e.Row.RowIndex) && e.Row.Cells[8].Controls.Count == 0)
                    {
                        string val = "0";
                        val = e.Row.Cells[8].Text;
                        TextBox tb = new TextBox();
                        e.Row.Cells[8].Controls.Add(tb);
                        tb.ID = "TextBoxEdit" + e.Row.RowIndex;
                        tb.Visible = true; tb.EnableViewState = true; tb.AutoPostBack = true;
                        tb.Width = 50;
                        tb.Text = val;
                    }
                }
    Il y a une autre Textbox de rajouter dans un autre cas, mais si j'arrive à résoudre mon problème pour celles-ci, cela devrait être aisé pour les suivantes.

    Donc mon problème est que lorsque l'utilisateur clique sur le bouton enregistrer, toutes mes TextBox disparaissent, étant remplacées par les valeurs qu'elles contenaient au moment du chargement. Les valeurs de l'utilisateur ne sont donc pas mémorisées, et je ne peux pas les récupérer.

    Encore que les TextBox disparaissent au moment du clique ne me gène pas trop, mais perdre les informations de l'utilisateur c'est plutôt mauvais pour les enregistrer sur la BDD après... :s

    Je vous remercie par avance de l'aide que vous pourriez m'apporter.

    Pour le moment je repars à la charge ^^.

    PS : Ha oui petite précision puisque tout est dynamique je ne peux instancier mes TextBox que sur le OnRowDataBound, s'il y a une autre solution alternative je suis près à essayer, mais pour le moment je ne trouve pas.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Points : 74
    Points
    74
    Par défaut
    J'ai deja eu ce probleme la aussi

    J'ai pas mal galerer et j'ai trouver une solution apres est-ce que c'est élégant ou optimal je sais pas mais toujours est-il que ca marche.

    Tu stocke le resultat de tes checkbox coché dans des variable de session
    Quand tu valide en cliquant sur le bouton d'envoi

    Tu verifie que ta checkbox et cocher ou pas et si elle l'est coché tu instancie la variable de session correspondante apres cette methode peut etre lourde si tu as pas mal de checkbox

    En esperant t'avoir aider

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Points : 62
    Points
    62
    Par défaut
    Bon je vais pas faire mariner quelqu'un pour quelque chose que j'ai résolu moi-même... Vive les newbies qui tentent d'apprendre sur le tas ne sachant pas si c'est bien codé ^^.

    Donc voilà une solution toute bète mais réel.

    En fait au clique du bouton pour l'update la page se recharge, le gridview non, et on perd les textbox mais pas les valeurs déjà chargées dedans.

    Puisque la Textbox est déclarée de façon totalement dynamique, même avec l'autopostback à true elle ne se recharge pas.

    Il faut en fait recharger la partie de la gridview qui nous interesse, et cela de la même manière que cela a été fait précédement. Normalement les TextBox se recréent et récupèrent tout simplement le Viewstate (si vous n'avez pas oublié de le mettre à true pour les textbox dynamique).

    Voilà, solution pas forcément des plus jolie mais qui fonctionne.

    D'ailleurs petit rappel, l'ID du control doit être fournis, sinon il ne le retrouvera pas dans le ViewState.

    J'ai tout de même un petit problème, si quelqu'un passe par là et pouvait y répondre.

    Si le ClientID qui est enregistré dans le ViewState est différent d'une page chargé à la suivante, n'y a t-il pas un risque pour que la textbox une fois recréée dans le nouveau chargement des zones de la gridview qui m'interesse ne récupère pas la valeur du viewstate de sa prédécéseuse ? (prédécéseuse ça existe d'ailleurs ? Pouah je me pose trop de questions )

    Je ne suis pas sûr d'avoir été clair, de toute façon ça marche c'est magique, c'est l'informatique ! (bon ok j'ai peut-être tords )

    ... ou pas.

    Bon aller au boulot sinon le patron va criser.

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

Discussions similaires

  1. Sauver l'etat d'un gridview pour postback
    Par patrice419 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 11/05/2012, 18h38
  2. GridView+TextBox Editable+Bind=problème d'affichage
    Par Bindy dans le forum Windows Presentation Foundation
    Réponses: 12
    Dernier message: 12/03/2009, 12h16
  3. Modifier la requête gridview à chaque postBack
    Par stroumfs dans le forum ASP.NET
    Réponses: 1
    Dernier message: 01/02/2009, 19h30
  4. Gridview, footer, postback et lifecycle
    Par mcolo dans le forum ASP.NET
    Réponses: 1
    Dernier message: 18/09/2008, 14h58
  5. Gridview Problème Postback
    Par hippoX dans le forum ASP.NET
    Réponses: 8
    Dernier message: 17/07/2007, 13h31

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