我有一个使用数据集表适配器填充的组合框。我有一个文本框和旁边的按钮。单击此按钮,文本框值将添加到数据库中。我想在任何新条目完成后刷新我的Combobox。我做了我的研究并发现我必须创建一个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);
}
}
答案 0 :(得分:0)
尝试:
private void add_Click(object sender, RoutedEventArgs e)
{
tableAdapterServices.InsertQuery(txtTobeAdded.Text);
service.ItemsSource = tableAdapterServices.GetData().DefaultView;;
service.SelectedIndex = 0;
}
它是一个懒惰的解决方案,将值推回到组合框中。如果您想学习使用可观察集合的方法,您将不得不查看数据绑定和MVVM设计模式。 More Info Found here
答案 1 :(得分:0)
您的场景:无论数据库的哪些更改都必须反映到组合框..
解决方案1:只需将另一个表单调用为ShowDialog()而不是Show(),并在子表单关闭后再次绑定组合框的数据源。因为你可以再次查询数据库并再次检索数据。
解决方案2:只需拥有一个静态List,并使用Parent构造函数从子表单中将新添加的值发送到Parent表单。