我有两张桌子。 表1通过Table2ID与Table2链接。
我需要一个组合框来加载表2中的所有数据并显示初始选择,如表1所示。
以下代码只能加载Table2中的所有数据,但无法显示所选内容,如表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";
}
答案 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;
使用上面的方法并且有效。 谢谢你的帮助。