我有一个数据网格,其中包含来自本地数据库的信息。当我点击其中一个选项时,我希望将该信息放入变量并将信息放入文本块中。
我有一些代码,但是选择了'总是返回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
类型的对象,但您可以使用以下行从数据库中选择匿名对象:
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();
}
}