2013-04-04 22 views
1

I'm具有數據綁定的DataGridView的問題之後:使用C#,數據綁定的DataGridView表示錯誤的數據插入行編程

I'm一個視圖,其包括從一個SQL Server數據庫作爲數據源內連接。當我以編程方式插入行時,數據寫入正確,但DataGridView沒有顯示它應該顯示的數據。

視圖中的某些列與另一個表連接在一起。基本上,我將主表中的ID值與子表連接起來,以便能夠顯示列的文本值。當我將包含id值的行插入到GridView中時,它將顯示ID值,但不顯示相應的文本值。

如果我重新啓動程序,一切都顯示正確。如何更新/刷新GridView以顯示正確的文本值?我試過了GridView.EndEdit()和GridView.Refresh(),將數據源重新綁定到了GridView,並且一直在搜索網頁沒有成功。

+0

它是否類似於這個問題:http://stackoverflow.com/questions/3340192/datagridview-bound-to-bindinglist-does-not-refresh-when-value-changed – SamFisher83 2013-04-04 15:43:38

+0

你嘗試了yourGridView.Refresh() ? – 2013-04-04 15:46:42

+0

可能是這個鏈接將幫助你http://stackoverflow.com/questions/11020384/how-do-i-update-reload-datagridview-bindingsource – 2013-04-04 16:11:50

回答

0

使用您在首次加載頁面時使用的相同查詢重新進行查詢。

+0

嗯,如果我得到你的權利,這就是我試圖避免,因爲這意味着重新加載成千上萬的行,並導致延遲... – Chris 2013-04-04 16:02:24

+0

你將不得不無論如何..如果其他用戶修改了一些數據與此同時?通過刷新整個數據集,您可以獲得最新的數據,避免衝突。 您始終可以使用數據分頁加載數據的子集而不是「數千行」。 – Oscar 2013-04-05 07:44:53

+0

不,我不需要,真的:如果外部數據在數據庫中發生更改,程序中的數據更改將導致DBConcurrencyException,這可能會被try catch子句捕獲,詢問用戶是否要更新數據。只有15人同時處理數據庫數據。由於數據相當可觀,拋出異常的可能性不大。所以我儘量避免重新加載。不幸的是分頁不是一個選項:-( – Chris 2013-04-05 12:09:49

0

DataGridView.Refresh()圖形刷新,而不是一個數據刷新。更新後需要重新綁定數據源。

插入後將數據源設置爲空:DataGridView.DataSource = null;然後通過重新查詢數據並應用更新的源DataGridView.DataSource = someSource重新綁定數據源,最後再次調用DataBind()

它對於你來說不夠好,我可能會建議限制結果集中返回的行數,或者在你的表中應用一些有價值的索引。

+0

嗨!謝謝你的回答,我已經回答了奧斯卡的一個類似的建議:如果外部數據在數據庫中發生變化,程序中的數據改變將導致DBConcurrencyException,可以在try catch子句中被捕獲,詢問用戶是否要更新數據。只有15人同時處理數據庫數據。由於數據相當可觀,拋出異常的可能性不大。所以我儘量避免重新加載。 – Chris 2013-04-05 12:14:03

+0

是否可以刷新元素(例如,綁定源,數據適配器,表)以使Gridview再次顯示正確的值 - 而無需重新加載數據?預先感謝答案:-) – Chris 2013-04-05 12:14:51