0

エンティティ フレームワークを使用して、wpf のコンボ ボックスから選択したアイテムの詳細を表示したいと考えています。しかし、以下の私のコードは、どのアイテムが選択されていても、データベースからの最初のエントリのみを表示します。

private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        using (Entities c = new Entities())
        {
            string sFirst = c.UserProfiles.FirstOrDefault().First.ToString();
            string sLast = c.UserProfiles.FirstOrDefault().Last.ToString();

            txtFirst.Text = sFirst;
            txtSecond.Text = sLast;
         }
    }
4

2 に答える 2

0

データベースからデータをフィルタリングしていません...where選択したアイテムを指定する句はありません。データの構造についてはわかりませんが、次のようにしてみてください。

using (Entities c = new Entities())
{
    string sFirst = c.UserProfiles.Where(u => u.Id == selectedItemId).First().First.ToString();
    string sLast = c.UserProfiles.Where(u => u.Id == selectedItemId).First().Last.ToString();

    txtFirst.Text = sFirst;
    txtSecond.Text = sLast;
}

さらに、FirstOrDefault()結果が正しいかどうかを確認するつもりがなければ、使用しても意味がありnullません。

于 2013-10-31T15:13:44.587 に答える
0

私はあなたがものを混同していると思います。

あなたが実際に欲しいのは、コンボボックス内のアイテムだと思います。このコードを試してください:

private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var comboBox = sender as ComboBox;
        if (comboBox != null)
        {
            var item = comboBox.SelectedItem as EntityType;
            //EntityType == the table you are loading into combobox (I guess it supposed to be UserProfile)
            if (item != null)
            {
                txtFirst.Text = item.First.ToString();
                txtSecond.Text = item.Last.ToString();
            }
        }
    }
于 2013-10-31T15:31:00.100 に答える