我有一個combobox
,我databinding
到DataTable
其從數據庫中獲取數據,如下所示:WPF組合框數據綁定到DataTable,自動刷新
SqlDataAdapter adp = new SqlDataAdapter
(@"SELECT [CategoryID],[CategoryName]FROM [Northwind].[dbo].[Categories]",
@"Integrated Security=SSPI;Initial Catalog=Northwind;Data Source=AKSHAY-PC\SQLEXPRESS");
DataTable tbl = new DataTable();
adp.Fill(tbl);
cmbCities.ItemsSource = ((IListSource)tbl).GetList();
cmbCities.DisplayMemberPath = "[CategoryName]";
cmbCities.SelectedValuePath = "[CategoryID]";
當表數據被改變(添加/移除行),則combobox
不會被刷新,因爲IList
沒有構建它的更改通知。
有什麼辦法可以使它成爲可能嗎?
如果這是不可能的,有什麼辦法來「刷新」數據綁定,以便datatable
將再次獲取數據。在這種情況下,我會做的是在窗口初始化時執行上面的代碼,然後再次刷新它而不需要再次執行相同的代碼。類似於cmbCities.Data.Refresh()
。
感謝華爾街,但我仍然要點擊按鈕查看更新。 – 2011-02-26 04:26:29
我添加了按鈕,可以讓您輕鬆查看您的數據庫是否需要使用。這是示例代碼,我希望你能夠學習並適應你的具體需求。 所以這裏是如何使用它在你的情況給你的問題:你應該在你的代碼中調用_tbl.Clear()後跟_adp.Fill(_tbl)在某些函數中,當你需要刷新數據綁定時調用,因爲底層數據已經改變。 – 2011-02-28 16:07:20