WPF ComboBox将SQL与selectedValue绑定,如同在数据库中一样

时间:2012-06-06 02:09:57

标签: c# wpf

我有两张桌子。 表1通过Table2ID与Table2链接。

我需要一个组合框来加载表2中的所有数据并显示初始选择,如表1所示。

以下代码只能加载Table2中的所有数据,但无法显示所选内容,如表1所示

任何人都可以帮助我吗? 感谢。

enter image description here 在此图像中,当窗口首次加载时,组合框应显示“Siong Wan Trading”。

Table1
ID  Name    Table2ID
1   Hello   1
2   World   1
3   User    2

Table2
ID  Name
1   ABC
2   DEF

private DataSet getData()
        {
            SqlConnection conn = new SqlConnection(ConnectionString);
            SqlDataAdapter da = new SqlDataAdapter("usp_getalldata", conn);
            DataSet ds = new DataSet();
            da.Fill(ds, "DATA");
            return ds;
        }
public Details()
    {
        InitializeComponent();
        DataSet ds = getData();
        DataTable dt = ds.Tables[0];
        this.combobox.ItemsSource = ((IListSource)dt).GetList();
        this.combobox.DisplayMemberPath = "Name";
        this.combobox.SelectedValuePath = "ID";
}

2 个答案:

答案 0 :(得分:1)

您应该在{XAML中ItemsSource ComboBox作为<UserControl.Resources> <ObjectDataProvider x:Key="MyDataSource" ObjectType="{x:Type my:StaticDataSource}" MethodName="GetMyData"/> </UserControl.Resources> ... <ComboBox ItemsSource="{Binding Source={StaticResource MyDataSource}}" SelectedValue="{Binding Table2ID}"/>

以下是如何使用它的示例。

StaticDataSource

您的public class MyDataSource { private static IEnumerable<Table2> myData; public MyDataSource(IEnumerable<Table2> data) { myData = data; } public static IEnumerable<Table2> GetMyData() { return myData; } } 课程如下:

{{1}}

答案 1 :(得分:0)

    this.combobox.SelectedValue = Table2ID;

使用上面的方法并且有效。 谢谢你的帮助。