2017-05-09 19 views
0

私は、ローカルデータベースの情報でいっぱいになったデータグリッドを持っています。これらのオプションの1つをクリックすると、その情報を変数に入れ、情報をテキストブロックに入れます。データグリッドから情報を取得する

私はこのコードを使用していますが、「選択済み」は常に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イベントでキャストすることはできません。

試してみて、(私は、私は全体のエントリを取ることをお勧めクラスManagerTBLの構造を知っていない)にselect文を変更します。

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

何らかの理由で情報から1つの情報を取り出すことは可能でしょうか?私はそれを検索できるように(すなわちID)持っていますか? –

+0

もちろん、情報は1つだけ取ることができますが、特定のタイプにキャストしたい場合は、この情報を格納するカスタムクラスを作成する必要があります –

+0

部分クラスのように? –

関連する問題