2009-09-16 409 views
1

我有一個DataGridView,我很喜歡這樣的結合:當綁定項目被更改時,DataGridView不會更新?

companies = new BindingList<Company>(PersistenceManager.Instance.RetrieveAll<Company>(SessionAction.BeginAndEnd)); 
bindingSource.DataSource = companies; 
potentialInvestorDataGridView.DataBindings.Add("DataSource", bindingSource, "PotentialInvestors"); 

問題是,當我添加到列表PotentialInvestors

Company company = bindingSource.Current as Company; 
company.PotentialInvestors.Add (new Investor ()); 

數據網格不會與新行更新。我試圖呼籲

bindingSource.ResetCurrentItem(); 
potentialInvestorDataGridView.EndEdit(); 
potentialInvestorDataGridView.Refresh(); 

但似乎沒有更新數據網格。 (如果關閉對話框並重新打開它,現在顯示項目)。

我需要做些什麼才能正確更新?

回答

1

如果底層數據源(PersistenceManager.Instance.RetrieveAll<Company>(...)的結果)支持通知機制,則只會傳播更改。我非常肯定,爲了使它在數據源本身上必須支持IBindingList。你有數據源實現的接口列表嗎?

編輯

您可以手動在ListChanged事件調用Reset值(這是網格留意)通過在GridView控件調用ResetBindings。但是,這會導致網格刷新數據的全部,而不僅僅是發生了什麼變化。

+0

我的公司和Investor類都支持INotifyPropertyChanged接口,因此他們應該通知屬性更新。 無論哪種方式,我應該能夠告訴datagrid以某種方式更新? – Kyle 2009-09-16 15:35:11

相關問題