Récupérer la valeur d'un champ dans une datagrid [Résolu]

Signaler
-
 fifita92 -
Bonjour SVP je veux récupérer la valeur d'un champ qui se trouve dans une datagrid mais toujours me donne cette erreur "An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll

Additional information: Index was out of range. Must be non-negative and less than the size of the collection.
" voila le code :
  private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
int n = int.Parse(dataGridView1.SelectedRows[0].Cells[8].Value.ToString());
            
            if (e.ColumnIndex == 1)
            {
                Form f = new vue.Vente.Vente2();

                List l = bd.Produit.ToList();
                for (int i = 0; i < l.Count(); i++)
                {
                    if (l[i].IdProduit == n)
                    {

                      
                        Vente2.t.Text = l[i].DesignationProduit;

                    }

                }

             

              f.Show();
            }
        }

mais quand je met le même code dans un bouton je peux récupérer la valeur de n'importe quel champ et de meme pour ce code si je fais
int n = int.Parse(dataGridView1.Rows[0].Cells[8].Value.ToString());

il me récupére la valeur de la première ligne mais moi je veux récupérer de la ligne sélectionner .
Merci d'avance :)
A voir également:

2 réponses

Messages postés
16032
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 juin 2021
551
C'est un peu confus, ton code marche ou te fais une erreur?


int n = int.Parse(dataGridView1.Rows[0].Cells[8].Value.ToString());


il me récupére la valeur de la première ligne mais moi je veux récupérer de la ligne sélectionner .
Merci d'avance :)


Pour cette partie c'est normal, tu lui demandes Row[0], donc c'est elle qu'il te donne.
Essaye ça
int index = dataGridView1.SelectedRows[0].Index;//récupère l'index de la première ligne sélectionnée
int n = int.Parse(dataGridView1.Rows[index].Cells[8].Value.ToString());

Whismeril
Merci pour votre aide ,en effet le problème c'était pas au niveau du code ,j'ai pu résoudre le problème c'était seulement au niveau des propriétés de la datagrid il faut juste modifier la propriété selectionMode par FullRowSelect comme ça une fois je clique sur la ligne j'aurai toute la ligne sélectionner , c'est pas comme auparavant il m’apparait que j'ai sélectionné toute la ligne mais c'est pas le cas .
Merci :).