2010-06-21 35 views
0

我正在C#表格中使用數據綁定(通過LINQ to SQL),我需要知道如何在將新項目添加到我的表格時更新BindingContext.net bindingcontext更新方法

更具體地說,我的表單顯示了各個領域的項目屬性。用戶可以通過項目名稱組合框遍歷不同的項目。在表單的底部我有一個創建按鈕和一個刪除按鈕。用戶創建或刪除項目時出現問題,因爲綁定上下文未使用新的項目列表更新。因此,用戶無法遍歷新項目,或者更糟糕的是,用戶可以遍歷到並嘗試修改已刪除的項目。

我希望我可以在創建刪除之後調用某種方法,以便綁定更新。像this.BindingContext[db.Projects].UpdateDammit()

感謝您的幫助, JB

+0

沒有C#表單。 WinForms/WPF或ASP.NET? – 2010-06-21 21:27:20

+0

我正在使用Windows窗體。 – JnBrymn 2010-06-22 03:28:53

回答

0

我的最終解決方案是創建兩種方法結合再後來重新綁定數據:

private void bind() 
{ 
    object dataSource = db.Projects.OrderBy(p => p.ProjectNo); 
    projectNoTextBox.DataBindings.Add("Text", dataSource, "ProjectNo"); 
    projectNameTextBox.DataBindings.Add("Text", dataSource, "ProjectName"); 
    //etc. 
} 
private void rebind() 
{ 
    projectNoTextBox.DataBindings.Clear(); 
    projectNameTextBox.DataBindings.Clear(); 
    //etc. 
    bind(); 
} 

在負載形式方法我將綁定數據,然後用戶創建或刪除項目後我會重新綁定數據。

我對.Net數據綁定的經驗是它是一個很大的混淆黑匣子。我認爲,如果我完全理解它,它會爲我節省很多時間 - 畢竟,有時我會學習一些關於數據綁定的新知識,我的GUI代碼的長度會減半!然而我常常發現自己對於爲什麼會出現某些異常行爲一無所知。即使有這個...我敢打賭,有一些更簡單的方法來做到這一點。

0

確保無論你綁定到可以通知變化做UI。如果您的綁定上下文是一個集合,您可以使用ObservableCollection

如果綁定到集合中的特定元素,則需要確保元素實現INotifyPropertyChanged,並在值更改時引發通知。

+0

我假設你也通過Linq2Sql對數據庫進行了更改。 Table是否在與BindingContext相同的數據庫上下文中用於更新的引用? – Vitalik 2010-06-22 14:01:36