2017-05-09 140 views
0

我有一個數據網格充滿了來自本地數據庫的信息。當我點擊其中一個選項時,我想將這些信息放入一個變量中,並將這些信息放入一個文本塊中。從數據網格獲取信息

我有一些代碼,但是'selected'總是返回null。

下面是代碼:

private void lbxManagerDisplay_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    ManagerTBL selected = lbxManagerDisplay.SelectedItem as ManagerTBL; 

    if (selected != null) 
    { 
     txtblock_ManagerName.Text = selected.Id.ToString(); 
    } 
} 

這裏是我如何填充數據網格

var PopulateManagers = from m in db.ManagerTBLs 
        where m.ManagerName != null 
        orderby m.TeamName descending 
        select new 
        { 
         ID = m.Id, 
         Manager_Name = m.ManagerName, 
         Nationality = m.ManagerNationality, 
         Team = m.TeamName, 
         Trophies = m.TrophyCount, 
        }; 
lbxManagerDisplay.ItemsSource = PopulateManagers.ToList(); 

只是讓每個人都知道lbxManagerDisplay是一個DataGrid

+0

問題更新 –

+0

我沒有看到'ManagerTBL'類的結構,所以我改變了我的答案,從DB中選擇了整個條目'm' –

回答

0

你的問題是,你不」 t選擇ManagerTBL類型的對象,但您使用此行從您的數據庫中選擇匿名對象:

select new { 

因此,編譯器不可能將其轉換爲SelectionChanged事件。

嘗試改變SELECT語句(我不知道類ManagerTBL所以我建議把整個項目的結構):

var PopulateManagers = from m in db.ManagerTBLs 

      where m.ManagerName != null 
      orderby m.TeamName descending 
      select m; 

您也可以只一條信息,但是,如果你想將它轉換爲特定的類型,你需要做一個自定義類來存儲這些信息

public class MTBL_DataContainer 
{ 
    public int ID { get; set; } 
    public string Manager_Name { get; set; } 
    public string Nationality { get; set; } 
    public string Team { get; set; } 
    public int Trophies { get; set; }  
} 


var PopulateManagers = from m in db.ManagerTBLs 
       where m.ManagerName != null 
       orderby m.TeamName descending 
       select new MTBL_DataContainer 
       { 
        ID = m.Id, 
        Manager_Name = m.ManagerName, 
        Nationality = m.ManagerNationality, 
        Team = m.TeamName, 
        Trophies = m.TrophyCount, 
       }; 
lbxManagerDisplay.ItemsSource = PopulateManagers.ToList(); 

而在最後,你可以施放它是這樣的:

private void lbxManagerDisplay_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    MTBL_DataContainer selected = lbxManagerDisplay.SelectedItem as MTBL_DataContainer; 

    if (selected != null) 
    { 
     txtblock_ManagerName.Text = selected.ID.ToString(); 
    } 
} 
+0

是否有可能以某種方式從查詢中獲取一個信息我有(即身份證),以便我可以搜索? –

+0

當然你只能拿一塊信息,但是如果你想把它轉換成特定的類型,你需要創建一個自定義的類來存儲這些信息 –

+0

就像分部類一樣? –