0

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

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

下面的代码只能从表 2 中加载所有数据,但不能显示选择的数据,如表 1 所示

谁能帮我?谢谢。

在此处输入图像描述 在此图中,首次加载窗口时,组合框应显示“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";
}
4

2 回答 2

1

你应该在你的 XAML 中ObjectDataProvider作为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;
    }
}
于 2012-06-06T02:21:26.123 回答
0
    this.combobox.SelectedValue = Table2ID;

使用了上述方法,它起作用了。感谢您的帮助。

于 2012-06-06T03:21:33.883 回答