【问题标题】:How to Refresh ComboBox binding to a DB如何刷新组合框绑定到数据库
【发布时间】:2014-07-28 06:41:45
【问题描述】:

我有一个使用数据集表适配器填充的组合框。我有一个文本框和旁边的按钮。单击此按钮会将文本框值添加到数据库中。一旦创建了任何新条目,我想刷新我的组合框。我做了研究,发现我必须创建一个 ObservableCollection 并用数据库中的数据填充它。但是由于我使用的是数据集,因此每个表的所有类都已经存在。

这是我的代码:

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);
    }
}

【问题讨论】:

    标签: c# wpf combobox observablecollection inotifypropertychanged


    【解决方案1】:

    您的方案:对数据库的任何更改都必须反映到组合框..

    解决方案 1:只需将另一个表单调用为 ShowDialog() 而不是 Show() 并且一旦子表单关闭,就再次绑定组合框的数据源。因为您可以再次查询数据库并再次检索数据。

    解决方案 2:只需要一个静态列表,然后使用 Parent 构造函数将新添加的值从子表单发送到父表单。

    【讨论】:

      【解决方案2】:

      尝试:

      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

      【讨论】:

      • 感谢您的回复。您的解决方案适用于我已经解释的场景。实际上,我给出了一个更简单的问题形式,只是为了得到一些解决方案。实际的问题是我有文本框和另一种形式的添加按钮,我在单击另一个按钮时打开它们。在该表单中插入正在发生,并且在该表单关闭时我需要更新组合框。
      • 由于我不知道新场景,我建议提出一个新问题。听起来好像在创建窗口时需要将该窗口设置为属性。在两个窗口之间来回传递数据。要么在子窗口的构造函数中传递组合框
      猜你喜欢
      • 1970-01-01
      • 2014-08-07
      • 2022-10-07
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多