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 récupérer les valeurs des champs avec GRIDVIEW


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 6
    Points
    6
    Par défaut Comment récupérer les valeurs des champs avec GRIDVIEW
    Bonjour,
    Je suis débutant et j'essaye de développer une petite application en 4-tiers architecture dans le cadre d'une formation.

    Pour tester certaines fonctions(delete,update,tri...), je récupère les informations par un objet Data Table et j'affiche les lignes (nom, prénom..) sur une page ASP via Gridview.

    Pour le tri des colonnes ou de DELETE pas de problème. Pas de problème non plus pour INSERT.

    Pour la fonction update j'ai quelques soucies .. En effet, Dans ma table j'ai tous les champs, mais je n'affiche qu'une partie avec ma GridView. Mais, j'ai besoin de récupérer tous les champs y compris ceux qui ne sont pas affichés avec leur valeurs d'origine, parce que je souhaite avoir une seule procédure stockée dans ma couche de persistance pour la fonction UPDATE.

    Question : Comment récupérer les valeurs de ces champs ?

    Merci d'avance..

    Voici le bout de 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
        
    /// Se déclenche quand on clique sur  le bouton "Mise à Jour" 
     
        protected void UpdateRecord(object sender, GridViewUpdateEventArgs e)
        {
            // e.RowIndex = index de la ligne. Donc on recupere l'identifiant de l'utilisateur de la ligne e.RowIndex
    
            int IdUtilisateur = Int32.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString());
          
            int intResult = 0;     
    
            GridViewRow row = GridView1.Rows[e.RowIndex];
    
    	 // les champs affichés :
            TextBox tPn = (TextBox)row.FindControl("txtPnom"); 
            TextBox tNm = (TextBox)row.FindControl("txtNm");
            TextBox tPsd = (TextBox)row.FindControl("txtPseudo");
            TextBox tEml = (TextBox)row.FindControl("txtMail");
    
            // instancier BAL
            UtilisateurBAL uBAL = new UtilisateurBAL();
            Utilisateur utilisateur = new Utilisateur();
            try
            {
                utilisateur.IdUtilisateur =IdUtilisateur;
                utilisateur.Nom = tNm.Text;
                utilisateur.Prenom = tPn.Text;
                utilisateur.Pseudo = tPsd.Text;
                utilisateur.Email = tEml.Text;
    
               // comment recupérer les champs non affichés pour ne pas avoir plusieures  procédures  stockées
               //DateInscription
               //TypeUtilisateur
               //Ville
               //Pays
               //DateDeNaissance
               //Civilité......
    
                // instanciation Business Access Layer qui lui appele Data Access Layer
                intResult = uBAL.Update(utilisateur);
    
                if (intResult > 0)
                    lblMessage.Text = "l'enregistrement mis à jour avec succès.";
                else
                    lblMessage.Text = "l'enregistrement n'a pas pu être mis à jour.";
            }
            catch (Exception ee)
            {
                lblMessage.Text = ee.Message.ToString();
            }
            finally
            {
                utilisateur = null;
                uBAL = null;
            }
    
            GridView1.EditIndex = -1;
            // Rafrechir la list
            BindGrid();
        }

  2. #2
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    Bonjour,

    et si tu fais un autre constructeur, avec comme parametre IdUtilisateur, comme ça tu récupère tt les données de cet objet (utilisateur), tu modifié juste ce qui doit etre modifier et les autres tu garde leurs valeurs :

    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
     
    // tu vas récupérer tt les infos de cet utilisateur à l'aide de l'id, à toi de jouer dans ton BAL
     
    Utilisateur utilisateur = new Utilisateur(IdUtilisateur);
            try
            {
                // tu vas modifier juste ces infos.
                utilisateur.Nom = tNm.Text;
                utilisateur.Prenom = tPn.Text;
                utilisateur.Pseudo = tPsd.Text;
                utilisateur.Email = tEml.Text;
     
    // par défaut les autres valeurs sont les mêmes
    // et tu appel ta méthode de modification
    intResult = uBAL.Update(utilisateur);
    //.....................
    J'espère que j'ai compris ton souci et que je t'ai aidé.

    Bonne courage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Redouane me = new Redouane();
    if (me.Connect())
        me.ShareInformations();

  3. #3
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    D'accord avec Redouane.
    Pour moi il y a deux solutions :
    - celle que Redouane propose
    - l'autre consiste, selon moi, à inclure dans ta gridview les champs que tu n'as pas pour le moment, mais à rendre ces columns invisibles.

    Dans le premier cas tu es obligé de requêter ta bdd pour récupérer les infos manquantes, dans le second tu alourdi la gridview...
    A toi de choisir

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Merci calagan99 et Merci Redouane pour vos réponses.

    Justement je voulais éviter de faire un autre constructeur pour ne pas envoyer une autre requête aux couches inférieures.

    Les infos, je les ai bien au départ, mais je ne les récupère pas parce qu'elles ne sont pas définies dans ma gridview.

    je ne sais pas comment inclure dans ma gridview ces champs sans afficher et comment on récupère après les champs non affichés ?

    Voilà le pb.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2009
    Messages : 81
    Points : 60
    Points
    60
    Par défaut
    Salut!

    Pour cacher la colonne tu mets ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:boundfield Visible = false />
    Ensuite dans ta requête Update tu utilise "blabla WHERE nom_colonne = @nom_colonne"

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par ZeProgrammator Voir le message
    Salut!

    Pour cacher la colonne tu mets ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:boundfield Visible = false />
    Ensuite dans ta requête Update tu utilise "blabla WHERE nom_colonne = @nom_colonne"
    Merci ZeProgrammator,

    Effectivement ça marche. Mais est-ce une bonne méthode quand on a une dizaine de champs invisible ?
    Finalement je lance une requête vers les couches inférieure avant la mise à jour.

  7. #7
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Points : 707
    Points
    707
    Par défaut
    Si tu ne souhaites que récupérer certaines valeurs de ton gridview tu peux aussi utiliser les dataKey - dataKeyNames. Cela peut également rendre service.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/09/2013, 10h44
  2. Réponses: 1
    Dernier message: 28/01/2013, 14h55
  3. Gridview: Comment récupérer les valeurs des deux clés?
    Par Thomas_Laurent dans le forum ASP.NET
    Réponses: 1
    Dernier message: 02/02/2007, 14h54
  4. Réponses: 2
    Dernier message: 11/12/2006, 12h38
  5. Récupérer les valeurs des champs créés dynamiquement
    Par outlawz dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/05/2006, 16h32

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