2012-07-17 43 views
0

我創建了一個datagridview作爲其數據源的數據集。在某個文本框的keydown事件上,我爲數據集添加了一個新行,它直接反映在datagridview中。但是,如果我碰巧點擊datagridview中的最後一行,「左邊有一顆星」,無論我將多少行添加到數據集中,它們都不會被反映出來。如果我返回數據集行的數量,我可以看到它們被添加,只有它們不再反映在datagridview中。我試過ds.acceptchanges和datagridview.refresh,但沒有幫助。任何解決方案Datagridview不反映數據集的變化

這裏是我使用的代碼:

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

回答

0

OK,首先,你應該使用綁定源。這就是您的DataGridView作爲一個DataTableView。

要做的第一件事是這樣的: -

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

現在你需要設置你的DataGridView的數據源,這將是你的BindingSource BS: -

DatagridView1.Datasource = bs; 

現在所做的任何更改你的DatagridView將自動反映在你的DataSet表中。這也意味着在DataTable中所做的任何更改都會自動反映在您的GridView中。

+0

這已經完成了,這就是爲什麼我發現這個錯誤真的很奇怪,因爲綁定工作正常,直到你點擊最後一行的星號*到它的左邊 – 2012-07-23 10:28:52

+0

你可以嘗試改變「KeyDown」事件它向DataGridView添加一行而不是DataTable,因爲兩個對象都是綁定的,所以它應該將更改反映回數據集。 – Derek 2012-07-23 14:26:59