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

Résolu
fifita92 - 15 mai 2013 à 11:04
 fifita92 - 16 mai 2013 à 10:35
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 :)

2 réponses

Whismeril Messages postés 19044 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 mai 2024 656
15 mai 2013 à 19:07
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
3
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 :).
3
Rejoignez-nous