2010-01-14 105 views
3

我有一個datagridview。我讀了一個XML文件並將數據綁定到gridview。我更改xml並將其另存爲另一種形式。所以我重讀XML文件,並將其綁定到gridview。數據表獲取更新的值。但是網格沒有被更新,直到我關閉並再次打開應用程序。怎麼做?用更新的數據更新數據網格視圖

謝謝。

問候, Raghavendra

#1

是否有一個的DataGridView數據綁定()或重新綁定()?我這樣設置數據源 -

dvMoviesList.DataSource = dtMovies; 

如果我添加任何新行dtMovies表,並重新設置數據源,它是越來越體現。但是,如果我編輯任何現有的行的值,並重新分配數據源它不會得到反映,直到我關閉並再次打開該應用程序。有任何想法嗎?

謝謝。

+0

請添加一些代碼,看看實際發生了什麼...... – tzup 2010-01-14 12:42:00

回答

9

我想你需要在DataGridView和DataTable之間放置一個BindingSource。

DataGridView _dgv = new DataGridView(); 
BindingSource _bs = new BindingSource(); 
DataTable _dt = new DataTable(); 
. 
. 
. 
_dgv.DataSource = _bs; 
_bs.DataSource = _dt; 

現在,每當_dt得到更新,BindingSource的應該刷新的DataGridView的照顧,你不應該擔心再設置DataSource屬性。可以在InitializeComponent()方法(設計器),表單的構造函數或Form.Load事件處理函數中設置數據源屬性。

+0

*答案*! - 對不起,因爲未能在賞金結束前標記它:( – NLV 2010-02-23 04:54:53

+0

Omg老兄,那有2個upvotes有一段時間會自動給我一半獎金!有人把它拿走了! 我很高興你找到你的答案....請將其標記爲已接受的答案,以便至少獲得額外的15分。 – Ken 2010-02-23 15:23:28

+0

現在我無法將其標記爲答案,我沒有得到刻度標記,如何將其標記爲答案? – NLV 2010-02-24 14:10:56

0

你試過嗎?

dvMoviesList.Refresh(); 
+0

我已經試過這個沒有運氣。 – NLV 2010-02-10 05:02:33

+0

我有同樣的問題,並試過這個,它不起作用 – PlantationGator 2013-06-03 18:19:43

0

所有你需要的是數據綁定您的數據源就這樣

ArrayList list = new ArrayList(); 
list = YourXMLContent.GetItems(); 
GridView1.datasource = list; // you can use you DataTable instead of list 
GridView1.update(); 
Gridview1.invalidate(); 

其所有。

1

我確定我即將提出的建議不是正確的方法,但我遇到了同樣的問題,主要是作爲ASP.NET開發人員,而沒有在winforms中做過多少工作,我發現的唯一解決方案是設置數據源爲NULL,然後重新綁定數據。

示例: this.dataGridView.DataSource = null; this.dataGridView.DataSource = myDataSource;

要驗證由Nasser推薦的解決方案作爲解決方案,我似乎並不正確,即使它可行。

0

僅供參考:我注意到將DataSource設置爲DataSet與DataTable之間的區別。將它設置爲一個DataSet不會導致網格刷新,即使它只包含一個表。但是,將它設置爲DataSet中的DataTable將導致網格正確刷新。

順便說一句,我設置DataSource屬性在與DataGridView關聯的中間BindingSource對象中,而不是在DataGridView本身中。不確定這是否重要。

這可能只與問題相切,因爲問題中的DataSource是XML,而不是DataSet。然而,其他與我的問題可能會碰到這個話題(如我一樣),所以我發佈了這個。