【发布时间】:2018-07-10 14:16:13
【问题描述】:
我有一个 DataGrid,其中填充了来自连接的数据。
private void GetTeamData()
{
DataContext dc = new DataContext(connString);
Table<Team> tblLag = dc.GetTable<Team>();
Table<Division> tblDivision = dc.GetTable<Division>();
var teams = from team in tblLag
join division in tblDivision on team.Division equals division.Id
select new
{
name = team.TeamName,
beliggenhet = team.Location,
arena = team.Arena,
division = division.Name
};
dgTeams.ItemsSource = teams;
}
我想从选定的行中获取数据并将其放置在不同的文本框中。经过大量令人沮丧的谷歌搜索和尝试后,我终于找到了一个可行的解决方案:
private void ShowSelectedTeam(Object sender, RoutedEventArgs args)
{
GetDivisionNames();
dgTeams.SelectionUnit = DataGridSelectionUnit.FullRow;
Object selectedTeam = dgTeams.SelectedItem;
List<PropertyInfo> props = new List<PropertyInfo>(selectedTeam.GetType().GetProperties());
tbxTeam.Text = props[0].GetValue(selectedTeam, null).ToString();
tbxBeliggenhet.Text = props[1].GetValue(selectedTeam, null).ToString();
tbxArena.Text = props[2].GetValue(selectedTeam, null).ToString();
cbxDivisions.Text = props[3].GetValue(selectedTeam, null).ToString();
}
问题在于,这是一种非常复杂的方法,可以做一些不应该那么困难的事情。对于更简单的代码的建议,我会很高兴。
【问题讨论】:
-
创建一个包含 name、beliggenhet、arena 和 Division 属性的类型。