0

私は2つのテーブルを持っています。Table2ID を介して Table2 にリンクされた Table1。

Table2 のすべてのデータをロードし、Table1 に示すように選択された最初のデータを表示するには、コンボボックスが必要です。

以下のコードは、Table2 からすべてのデータをロードすることしかできませんが、Table1 に示すように選択したデータを表示することはできません。

誰でも私を助けることができますか?ありがとう。

ここに画像の説明を入力 この画像では、ウィンドウが最初にロードされたときにコンボボックスに「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 に答える