2013-10-31 74 views
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; 
     } 
    } 

回答

0

我認爲你正在混合的東西。

我相信你真正想要的是combox中的項目。 試試這個代碼:

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(); 
      } 
     } 
    } 
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與否沒有意義的。