2012-07-17 4 views
0

J'ai créé une vue de données avec un dataset comme source de données. Sur l'événement keydown d'une certaine zone de texte, j'ajoute une nouvelle ligne à l'ensemble de données et elle est directement reflétée dans la vue de données. Mais s'il m'arrive de cliquer sur la dernière ligne dans la vue de données "celle avec l'étoile sur sa gauche", peu importe le nombre de lignes que j'ajouterai à l'ensemble de données, elles ne seront pas reflétées. Si je renvoie le nombre de lignes de l'ensemble de données je peux voir qu'ils sont ajoutés seulement ils ne sont plus reflétés dans la vue de données. J'ai essayé ds.acceptchanges et datagridview.refresh mais non aidé. Toute solution?Datagridview ne reflétant pas les modifications de l'ensemble de données

Voici le code utilisé i:

if ds.tables(0).rows(datagridview.rows.count-1).item("Amount")<>0 then 
ds.tables(0).rows.add(ds.tables(0).newrow) 
end if 

Répondre

0

OK, tout d'abord, vous devez utiliser une source de liaison. C'est ce qui rend votre DataGridView & DataTable comme un.

La première chose à faire est la suivante: -

BindingSource bs = new BindingSource(); 
bs.DataSource = ds.tables[0]; 

Maintenant, vous devez configurer la source de données pour votre datagridview, qui sera votre BindingSource large: -

DatagridView1.Datasource = bs; 

Maintenant, les modifications apportées dans votre DatagridView reflétera automatiquement dans votre table DataSet. Cela signifie également que toute modification apportée dans DataTable sera automatiquement répercutée dans votre GridView.

+0

cela est déjà fait, c'est pourquoi je trouve cette erreur vraiment bizarre, parce que la liaison fonctionne bien jusqu'à ce que vous cliquez sur la dernière rangée celle avec l'étoile * à sa gauche –

+0

Vous pourriez essayer de changer l'événement "KeyDown" qu'il ajoute une ligne à DataGridView par opposition à DataTable, car les deux objets sont liés, il doit refléter les modifications dans le DataSet. – Derek

Questions connexes