2009-09-26 14 views
1

J'ai un datagridview dont la source est une datatable. Il y a des colonnes d'ordres et de noms d'aliments. J'insère de nouvelles valeurs dans le datagridview this et supprime de la table. Lorsque je sélectionne une ligne et la supprime, la couleur sélectionnée se déplace vers le haut, et si je veux supprimer un autre ordre pour le même aliment, je dois le recliquer à chaque fois. Comment puis-je résoudre ce problème? Par la façon dont je mets à jour le datagridview après l'insertion ou la suppression de sql, comme ceci;mise à jour datagridview

ds.Clear(); 
da.Fill(ds); 
dataGridView2.DataSource = ds.Tables[0]; 

da et ds est défini comme ceci;

da = new SqlDataAdapter(sqlcommand); 
ds = new DataSet(); 

Répondre

1

J'ai trouvé la réponse. Voici le link

0

Peut-être que si vous stockez l'index de votre sélection actuelle dans une variable avant la suppression, puis passer à cet indice après votre DataSet a été rempli.

+0

comment déplacer cet index? – EEE

+0

Si je me souviens bien, les deux DataGridView.DataSource et DataSet.Tables [0] partageront la même refenrece. Si c'est le cas, déplacez DataSet.Tables [0] .Rows [savedIndex] devrait faire le travail. Sinon, il y a aussi un objet dans Windows Form qui appartient à une instance de Form BindingContext [BindingSource/DataSource], qui vous permettra d'utiliser un CurrencyManager, puis throguh ce CurrencyManager vous serez en mesure d'obtenir la position index de l'élément/ligne sélectionné en cours dans le DataSource. –

+0

Je pensais que vous vouliez le faire à partir de la source de données. Mais en effet à tout moment vous pouvez obtenir la collection Rows d'un DataGridView, etc. comme mentionné dans le lien que vous avez posté. Ce qui est important, c'est que vous ayez réalisé ce que vous vouliez faire. =) –