Récupération d'une valeur gridview pour afficher un message

- - Dernière réponse : yann_lo_san
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
- 3 juil. 2015 à 21:37
Bonjour à tous,

alors voilà, je vous explique mon soucis. En fait j'ai une gridview, qui contient des éléments donc un "ID". Ce que j'aimerai faire, c'est de récupérer l'ID pour pouvoir afficher le message corresponsant à l'ID dans un label. Mais pas moyen, je ne trouve pas la solution.. =/.

Je vous mets le code ci-dessous :

le code aspx :

                                <%-- ID de la demande --%> 
                                
                                    
                                        '>
                                    
                                


le code c#:

    protected void GridDonnees_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        
        Label lbSuivi = (Label)GridDonnees.FindControl("NumSuivi");

        //Mise en place de la connexion 
        SqlConnection MyConnect = new SqlConnection();
        string ConnectStr = @"Data Source=BILOUTE;Initial Catalog=Intranet_New; User ID=New_Intranet_User; Password=abcdef";
        MyConnect.ConnectionString = ConnectStr;

        //Mise en place de la commande 
        SqlCommand MyCmd = new SqlCommand();
        MyCmd.Connection = MyConnect;
        MyCmd.CommandType = CommandType.Text;
        MyCmd.CommandText = " SELECT Message FROM SuiviFormulaire WHERE idSuivi=@idSuivi";
        MyCmd.Parameters.Add("@idSuivi", SqlDbType.Int).Value = lbSuivi.Text;

        MyConnect.Open();
        SqlDataReader MyReader = MyCmd.ExecuteReader();
        if (MyReader.HasRows)
        {
            MyReader.Read();
            LabelMessage.Text = MyReader.GetString(0);
        }

        MyReader.Close();
        MyConnect.Close();

    }


D'avance, merci pour votre aide !
Afficher la suite 

2 réponses

Messages postés
119
Date d'inscription
vendredi 27 décembre 2002
Statut
Membre
Dernière intervention
3 octobre 2016
1
0
Merci
bonjour

dans sql tu as la possibilité de créer une requête avec des joints
exemple

SELECT        Commande.Cde_Id, Client.Client_nom, Client.Client_prenom
FROM            Client RIGHT OUTER JOIN
                         Commande ON Client.Username = Commande.Cde_UserName


ainsi tu aura directement le message
Commenter la réponse de primactif
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
17
0
Merci
salut,

D'une part,

Label lbSuivi = (Label)GridDonnees.FindControl("NumSuivi");

ne te donnera jamais ce que tu veux.
RowDataBound est exécutée a chaque "Bind" d'une ligne du grid à la source de données.

Tu dois utiliser le paramètre fourni pour trouver ta donnée ! Et pas le grid lui même !

e.FindControl("NumSuivi");
//ou
e.Cells[0].Text;


de plus avec ce code,
si ton grid ramène 20 lignes, tu vas écrire 20 fois les valeurs correspondantes et ne voir que la dernière.
tu peux toujours faire ceci :

LabelMessage.Text += MyReader.GetString(0) + "<br />";


bye...
Commenter la réponse de yann_lo_san