簡體   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