Afficher le data dans Datagridviws cell ou le id est au cell0 [Résolu]

Signaler
Messages postés
123
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
1 juillet 2021
-
Messages postés
16115
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
27 juillet 2021
-
Bonjour,
salut, j'ai un datagridview ou je récupère les Id et le montant au premier et deuxieme colonne,
mais la troisième colonne devrait m'afficher un code fonction par exemmple par rapport au
dataGridView2.Rows[dvd].Cells[0].
Value de la première collone
mais, il me les affiche en bas au lieu que ca soir sur la meme ligne

voici le code ca marche mais il n'affiche pas sur la meme ligne

void recherch()
        {
            cnx = new SqlConnection(db.RXcon);
            try
            {
                cnx.Open();
            }
            catch
            {
                MessageBox.Show("Erreure lors de la Connexion");
            }
            if (dataGridView2.Rows.Count>0)
            {
                for (int dvd = 0; dvd < dataGridView2.Rows.Count; dvd++)
                {
                    
                    string ct = "select grade from fction inner join person on person.id= fction.id where  id ='" + dataGridView2.Rows[dvd].Cells[0].Value + "'";
                    commd222 = new SqlCommand(ct);
                    commd222.Connection = cnx;
                    try
                    {
                        SqlDataReader d = commd222.ExecuteReader();
                        d.Read();
                        DataGridViewRow Row = (DataGridViewRow)dataGridView2.Rows[0].Clone();
                        Row.Cells[2].Value = d["grade"].ToString();
                        d.Close();
                        dataGridView2.Rows.Add(Row);
                    }
                    catch (Exception tt)
                    {
                        MessageBox.Show(tt.Message.ToString());
                    }
                    finally
                    {

                    }
                }
            
           
            }


voici ce qu'il donne

Configuration: Macintosh / Firefox 78.0

5 réponses

Messages postés
16115
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
27 juillet 2021
723
Bonjour

C# est un langage objet qui est pensé pour le pattern MVC même en winform.
Ce que tu montres comme code n’utilise pas ces pratiques et en gros c’est du bricolage.



Du coup, un truc qui marche et qui (de mon point de vue) est une bonne façon de coder serait d’écrire une classe métier qui contient les infos extraites de la base de données est qui fait les calculs qui vont bien (ton fameux code par exemple)
Tu charges une collection de cette classe depuis la base de données et tu la bindes sur le datagridview.

Voir ce petit tuto

https://codes-sources.commentcamarche.net/faq/1291-utilisation-du-binding-au-travers-de-l-objet-databindingsource

Messages postés
123
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
1 juillet 2021

salut, le problème est juste d'afficher selon l'image à la meme ligne que le ID
Messages postés
16115
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
27 juillet 2021
723
Oui et bien coder en c# sans bricoler y répond.
Messages postés
123
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
1 juillet 2021

j'ai résolu ça

void gab2relik()
{
    if (dataGridView2.Rows.Count == 0) return;
    
    using (var conn = new SqlConnection(db.RXcon))
    using (var cmd = new SqlCommand("SELECT grade FROM fction INNER JOIN person ON person.id = fction.id WHERE fction.id = @ID", conn))
    {
        // TODO: Specify the correct data type and size for the parameter:
        var pID = cmd.Parameters.Add("@ID", SqlDbType.VarChar);
        
        try
        {
            conn.Open();
        }
        catch
        {
            MessageBox.Show("Erreure lors de la Connexion");
            return;
        }
        
        foreach (DataGridViewRow row in dataGridView2.Rows)
        {
            pID.Value = row.Cells[0].Value ?? DBNull.Value;
            row.Cells[2].Value = cmd.ExecuteScalar();
        }
    }
}

Messages postés
16115
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
27 juillet 2021
723
Si tu préfères continuer à bricoler et ne pas profiter de la puissance de C#.....