从数据网格获取信息
Getting information from a datagrid
我有一个数据网格,其中填充了来自本地数据库的信息。当我单击其中一个选项时,我想将该信息放入一个变量并将该信息放入一个文本块中。
我有一些代码,但是 'selected' 总是 returns 为空。
代码如下:
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
你的问题是你没有 select 类型 ManagerTBL
的对象,但是你 select 来自你的数据库的匿名对象,这一行:
select new {
所以编译器不可能在SelectionChanged
事件中强制转换它。
尝试将 select 语句更改为(我不知道 class ManagerTBL
的结构,所以我建议采用整个条目):
var PopulateManagers = from m in db.ManagerTBLs
where m.ManagerName != null
orderby m.TeamName descending
select m;
你也可以只取一条信息,但是如果你想把它转换成一个特定的类型你需要做一个自定义class来存储这个信息
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();
}
}
我有一个数据网格,其中填充了来自本地数据库的信息。当我单击其中一个选项时,我想将该信息放入一个变量并将该信息放入一个文本块中。
我有一些代码,但是 'selected' 总是 returns 为空。
代码如下:
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
你的问题是你没有 select 类型 ManagerTBL
的对象,但是你 select 来自你的数据库的匿名对象,这一行:
select new {
所以编译器不可能在SelectionChanged
事件中强制转换它。
尝试将 select 语句更改为(我不知道 class ManagerTBL
的结构,所以我建议采用整个条目):
var PopulateManagers = from m in db.ManagerTBLs
where m.ManagerName != null
orderby m.TeamName descending
select m;
你也可以只取一条信息,但是如果你想把它转换成一个特定的类型你需要做一个自定义class来存储这个信息
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();
}
}