[C#]rangée dataset pointée par rangée datagridview
Bonjour,
Voici mon problème :
J'ai un datagridview, rempli par un dataset.
Je trie le datagridview. Jusque là, aucun problème.
Je récupère les informations de la rangée sélectionnée : toujours aucun problème.
Mais j'ai besoin de faire "delete" sur la rangée correspondante du dataset sous-jacent.
Bref, quelque chose du genre : datagrid.marangéepointée->rangéepointéeDataset.delete.
Je ne trouve pas le moyen d'obtenir la rangée pointée dans le dataset à partir d'une rangée du datagrid.
J'ai contourné le problème comme suit :
Récupération de la rangée datagrid sélectionnée
Récupération de la colonne 0, qui est en fait une clé unique.
Puis, parcours de toutes les rangées de ma datatable pour trouver l'élément qui possède la même clé.
MAis ça ne fonctionne que parce que j'ai une clé unique, et en plus ça m'oblige à parcourir la datatable.
Quelqu'un sait-il comment obtenir la rangée d'une datatable à partir de la rangée du datagridview qui l'utilise?
Pour info, voici un extrait du code actuel (qui fonctionne), c'est la boucle qui me dérange, j'aimerais passer directement de dataGridView.Rows[bindingSource.Position] (datagridview)
à
row (datatable)
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
var num = (long)dataGridView.Rows[bindingSource.Position].Cells["Numero"].Value; // clé unique : OK
/foreach (DataRow row in datatable.Rows) // parcourir le datatable (n'est pas dans le même ordre que le binding
{ // et donc position ne pointe pas sur la bonne rangée
if (((long)row[0]) == num)
{
row.Delete();
break;
}
} |
MErci
Claude