[英]How to refresh a binding of the itemssource of a combobox programmatically?
[英]How to Refresh ComboBox binding to a DB
我有一個使用數據集表適配器填充的組合框。 我旁邊有一個文本框和一個按鈕。 單擊此按鈕后,文本框值將添加到數據庫。 完成任何新條目后,我想刷新我的組合框。 我做了研究,發現必須創建一個ObservableCollection並用DB中的數據填充它。 但是由於我正在使用數據集,所以每個表的所有類已經存在。
這是我的代碼:
XAML
<ComboBox Name="service" SelectedValuePath="Id" DisplayMemberPath="Service" ></ComboBox>
<TextBox Name="txtTobeAdded"></TextBox>
<Button Name="add" Content="Add" Click="add_Click"></Button>
C#
public partial class Window3 : Window
{
private SqlDatatsetTableAdapters.ServicesTableAdapter tableAdapterServices = new SqlDatatsetTableAdapters.ServicesTableAdapter();
public Window3()
{
InitializeComponent();
System.Data.DataView vw = tableAdapterServices.GetData().DefaultView;
service.ItemsSource = vw;
service.SelectedIndex = 0;
}
private void add_Click(object sender, RoutedEventArgs e)
{
tableAdapterServices.InsertQuery(txtTobeAdded.Text);
}
}
嘗試:
private void add_Click(object sender, RoutedEventArgs e)
{
tableAdapterServices.InsertQuery(txtTobeAdded.Text);
service.ItemsSource = tableAdapterServices.GetData().DefaultView;;
service.SelectedIndex = 0;
}
這是一個懶惰的解決方案,將值推回到組合框中。 如果您想學習使用可觀察集合的方法,則必須查看數據綁定和MVVM設計模式。 在這里找到更多信息
您的方案:對數據庫的任何更改都必須反映到組合框中。
解決方案1:僅將另一個窗體調用為ShowDialog()而不是Show(),並且一旦關閉子窗體,就再次綁定組合框的數據源。 因為您可以再次查詢數據庫並再次檢索數據。
解決方案2:只需擁有一個靜態List,然后使用Parent構造函數將新添加的值從子窗體發送到Parent窗體。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.