我想从连接到Entity Framework数据库的数据网格中获取每列的数据。 我想将它们转换为各自的文本框,但我似乎无法从数据网格中绘制数据。
这是我最初使用的代码(saw it here on SO):
private void DataGridCamiao_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
DataGrid DataGridCamiao = sender as DataGrid;
DataRowView row = (DataRowView)DataGridCamiao.SelectedItems[0];
TextBoxMarca.Text = row["Marca"].ToString();
}
虽然在运行之后它给了我一个错误:
System.InvalidCastException:无法将(我的自定义类型)与 DataRowView
相关联
我已经阅读了它并且我已将其更改为我的自定义类型,它说它无法编入索引并且无法运行,这基本上让我感到难过,因为我尝试了其他方法。我想了解一下我在这里做错了什么,也许是实现同一目标的不同方法,我还要感谢任何想要帮助我的人。
答案 0 :(得分:0)
您应该将SelectedItem
属性强制转换为您的实体类型:
private void DataGridCamiao_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
DataGrid DataGridCamiao = sender as DataGrid;
if (DataGridCamiao.SelectedItem != null)
{
var item = DataGridCamiao.SelectedItem as YourEntityClass;
if (item != null)
TextBoxMarca.Text = item.Marca;
}
}
将YourEntityClass
更改为您的实体类型的名称,即您已设置的T
的类型IEnumerable<T>
或绑定到{ItemsSource
的{{1}}属性1}}。
答案 1 :(得分:0)
你可以在没有代码隐藏的情况下做同样的事情:
{{1}}
最好切换到MVVM方法并绑定DataGrid.SelectedItem和TextBox.Text来查看模型属性。