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 :

Comment mettre à jour mon Gridview


Sujet :

ASP.NET

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 252
    Points : 192
    Points
    192
    Par défaut Comment mettre à jour mon Gridview
    Voila, à mon avis le souci doit être tout bête, mais j'ai un souci en mettant à jour mon gridview...
    Celui ci récupère l'ancienne valeur, et non la nouvelle
    Le code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
               //Recevoir la table 
                GridViewRow row = GridViewUtilisateur.Rows[e.RowIndex];
                sp.UpdateUser(new Odin.PERSONNE { PersonneName = ((TextBox)(row.Cells[2].Controls[0])).Text});
                TBoxErrorMsg.Text = "";
     
                //Mise à 0 de l'index
                GridViewUtilisateur.EditIndex = -1;
     
                //Binder le controle
                GridViewUtilisateur.DataSource = sp.GetUsers();
                GridViewUtilisateur.DataBind();
    J'ai adapté l'exemple présent sur msdn.... Mais rien à faire
    Merci d'avance

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Ta base est bien mise à jour?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 252
    Points : 192
    Points
    192
    Par défaut
    Non plus...

    Edit : J'ai oublié de dire que la procédure stockée, et la méthode de la mise à jour fonctionne bel et bien dans un projet Winforms et WPF... Donc pas de souci à ce niveau là....

    Edit : Pour essayer de faire avancer le shchmilblick, j'ai tenté un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TBoxErrorMsg.Text = ((TextBox)(row.Cells[2].Controls[0])).Text;
    Et bien sûr, ça m'affiche l'ancienne valeur, donc la base de donnée est bien mise à jour... avec l'ancienne valeur
    Donc je pige pas comment récupérer en fait la nouvelle valeur que je suis en train de mettre dans mon GridView

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    c'est quoi ton objet sp?

  5. #5
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par bipbip2006 Voir le message

    Edit : Pour essayer de faire avancer le shchmilblick, j'ai tenté un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TBoxErrorMsg.Text = ((TextBox)(row.Cells[2].Controls[0])).Text;
    Et bien sûr, ça m'affiche l'ancienne valeur, donc la base de donnée est bien mise à jour... avec l'ancienne valeur
    Donc je pige pas comment récupérer en fait la nouvelle valeur que je suis en train de mettre dans mon GridView
    A mon avis, tu rebindes ton gridview dans la page load donc tu perds tes modifs avant l'update

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 252
    Points : 192
    Points
    192
    Par défaut
    sp correspond à une instanciation d'une classe qui appelle mes procédures stockées.
    Tu as surement raison, ça doit être une erreur de binding.
    Je vais essayer de jeter un coup d'œil et je te tiens au courant.

  7. #7
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 148
    Points : 291
    Points
    291
    Par défaut
    Si tu charges ta GridView au page load met ce bout de code à la place

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if (!Page.IsPostBack){
     
     //Recevoir la table 
                GridViewRow row = GridViewUtilisateur.Rows[e.RowIndex];
                sp.UpdateUser(new Odin.PERSONNE { PersonneName = ((TextBox)(row.Cells[2].Controls[0])).Text});
                TBoxErrorMsg.Text = "";
     
                //Mise à 0 de l'index
                GridViewUtilisateur.EditIndex = -1;
     
                //Binder le controle
                GridViewUtilisateur.DataSource = sp.GetUsers();
                GridViewUtilisateur.DataBind();
    }
    EDIT : Désolé je t'ai mis du VB.Net alors que tu fais du C# (c'est parce que d'habitude je fais du C#, mais là je fais du VB.Net ^^).

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 252
    Points : 192
    Points
    192
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    A mon avis, tu rebindes ton gridview dans la page load donc tu perds tes modifs avant l'update
    Bon bey j'avais tenté un truc, mais ça ne marche toujours pas....
    Je re-poste mon code en expliquant un peu mieux à quoi cela correspond
    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
     
            protected void GridViewUtilisateur_RowUpdating(object sender, GridViewUpdateEventArgs e)
            {
               //Recevoir la table 
    //Mon index que je vais modifier
                GridViewRow row = GridViewUtilisateur.Rows[e.RowIndex];
    // Je vais mettre à jour dans la table les valeur PersonneName, PersonneUser et PersonnePAss
                sp.UpdateUser(new Odin.PERSONNE { PersonneName = ((TextBox)(row.Cells[2].Controls[0])).Text, PersonneUser = ((TextBox)(row.Cells[3].Controls[0])).Text, PersonnePass = ((TextBox)(row.Cells[3].Controls[0])).Text });
                TBoxErrorMsg.Text = "";
     
                //Mise à 0 de l'index
                GridViewUtilisateur.EditIndex = -1;
     
                //Binder le controle
    sp.GetUsers(); execute la procedure stockée qui renvoie tout les utilisateurs
                GridViewUtilisateur.DataSource = sp.GetUsers();
                GridViewUtilisateur.DataBind();
            }

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 252
    Points : 192
    Points
    192
    Par défaut
    J'ai enfin progressé un peu !
    Dans mon textbox, je récupère maintenant la nouvelle valeur.
    L'erreur venait que j'avais pas mi de if dans le page load, effectivement.
    Seulement voila, je souhaite binder grâce toujours à ma procèdure stockée sp.GetUser();
    Sauf que si je fais ça, la valeur n'est toujours pas mis à jour
    Donc si je résume

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
               //Recevoir la table 
                GridViewRow row = GridViewUtilisateur.Rows[e.RowIndex];
                sp.UpdateUser(new Odin.PERSONNE { PersonneName = ((TextBox)(row.Cells[2].Controls[0])).Text, PersonneUser = ((TextBox)(row.Cells[3].Controls[0])).Text, PersonnePass = ((TextBox)(row.Cells[3].Controls[0])).Text });
                TBoxErrorMsg.Text = ((TextBox)(row.Cells[2].Controls[0])).Text;
    //Maintenant TBoxErrorMsg renvoit bien la nouvelle valeur
                //Mise à 0 de l'index
                GridViewUtilisateur.EditIndex = -1;
     
                //Binder le controle
                GridViewUtilisateur.DataSource = sp.GetUsers();
                GridViewUtilisateur.DataBind();
     
    //Affichage de l'ancienne valeur, et la BDD n'est pas mise à jour...
    J'ai pourtant bien mi un if...
    Merci en tout cas pour votre rapidité et patiente

  10. #10
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 148
    Points : 291
    Points
    291
    Par défaut
    Tu as mis mon bout de code en entier ?
    Tu la mis toi ton If ?

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 252
    Points : 192
    Points
    192
    Par défaut
    Citation Envoyé par playfone Voir le message
    Tu as mis mon bout de code en entier ?
    Tu la mis toi ton If ?
    Je suis en c#, donc j'ai fais au debut

    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
     
    //Acces aux procèdures stockées
            SPDataAccess sp = new SPDataAccess();
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack)
                {
     
                    TBoxErrorMsg.Text = "";
                    GridViewUtilisateur.DataSource = sp.GetUsers();
                    GridViewUtilisateur.DataBind();
     
     
     
     
                }
            }
    Et un peu plus loin

    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
     
            protected void GridViewUtilisateur_RowUpdating(object sender, GridViewUpdateEventArgs e)
            {
               //Recevoir la table 
                GridViewRow row = GridViewUtilisateur.Rows[e.RowIndex];
                sp.UpdateUser(new Odin.PERSONNE { PersonneName = ((TextBox)(row.Cells[2].Controls[0])).Text, PersonneUser = ((TextBox)(row.Cells[3].Controls[0])).Text, PersonnePass = ((TextBox)(row.Cells[3].Controls[0])).Text });
                TBoxErrorMsg.Text = ((TextBox)(row.Cells[2].Controls[0])).Text;
     
                //Mise à 0 de l'index
                GridViewUtilisateur.EditIndex = -1;
     
                //Binder le controle
                GridViewUtilisateur.DataSource = sp.GetUsers();
                GridViewUtilisateur.DataBind();
     
            }

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 252
    Points : 192
    Points
    192
    Par défaut
    Cette partie du code ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (!Page.IsPostBack){
     
     //Recevoir la table 
                GridViewRow row = GridViewUtilisateur.Rows[e.RowIndex];
                sp.UpdateUser(new Odin.PERSONNE { PersonneName = ((TextBox)(row.Cells[2].Controls[0])).Text});
    En fait, dans le pageload, je n'ai pas accès au rowindex, ce qui me semble normal non ?
    Ou je me plante complètement alors....

  13. #13
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Ca n'a rien à faire dans le PageLoad ce morceau de code

  14. #14
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Si ta base n'est pas mise à jour, y a un problème au niveau de proc stock update

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 252
    Points : 192
    Points
    192
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Si ta base n'est pas mise à jour, y a un problème au niveau de proc stock update
    En fait mon application utilise une dll qui utilise une procédure stockée.
    C'est dll fonctionne parfaitement en Winforms et WPF
    Je me suis même amusé à la tester avec un bouton en asp, en remplissant les champs que j'utilise pour ajouter, ça marche aussi, donc je suis sûr et certain de ma procédure.
    Je ne peux pas mettre l'intégralité du projet en ligne (ça aurait était bien pratique) mais je pense que le souci vient effectivement du Binding

  16. #16
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Tu mets un point d'arrêt sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                sp.UpdateUser(new Odin.PERSONNE { PersonneName = ((TextBox)(row.Cells[2].Controls[0])).Text, PersonneUser = ((TextBox)(row.Cells[3].Controls[0])).Text, PersonnePass = ((TextBox)(row.Cells[3].Controls[0])).Text });
    et tu regardes les valeurs passées à ce moment là

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 252
    Points : 192
    Points
    192
    Par défaut
    Désolé de revenir si tard, mais j'avais eu beaucoup d'autres choses à faire.
    Bref, j'ai mi un point d'arrêt et les valeurs sont bien mise à jour, je pense que c'est mon binding qui ne colle pas correctement après....
    Si quelqu'un à une autre idée.

Discussions similaires

  1. Comment mettre à jour mon application mobile ?
    Par Rjbank dans le forum Mobiles
    Réponses: 1
    Dernier message: 09/07/2014, 15h36
  2. Comment mettre à jour mon profil
    Par Salma2013 dans le forum Emploi
    Réponses: 12
    Dernier message: 09/11/2013, 22h11
  3. Comment mettre à jour la version de mon noyau linux?
    Par JeSouffreAvecLinux dans le forum Linux
    Réponses: 8
    Dernier message: 08/09/2009, 23h39
  4. Réponses: 5
    Dernier message: 27/03/2009, 13h01
  5. Réponses: 1
    Dernier message: 15/09/2006, 11h24

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