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

floriian02 - 11 mars 2013 à 09:27
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 !

2 réponses

primactif Messages postés 119 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 3 octobre 2016 1
1 juil. 2015 à 19:03
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
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 23
3 juil. 2015 à 21:37
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...
0