繁体   English   中英

如何刷新ComboBox绑定到数据库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM