从Datagrid中选择Datagrid的行数据
我想从连接到Entity Framework数据库的数据网格中获取每列的数据。 我想将它们转换为各自的Textboxes,但我似乎无法从datagrid中绘制数据。
这是我最初使用的代码( 在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
我已经读过它并且我已经将它改为我的自定义类型,它说它不能被索引并且不能运行,这基本上让我难以接受,因为我尝试了其他方法。 我想要了解一下我在这里做错了什么,也许是实现同一目标的不同方法,我还要感谢任何想帮助我的人。
您应该将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
更改为实体类型的名称,即您已设置或绑定到DataGrid
的ItemsSource
属性的IEnumerable
的类型T
没有代码隐藏,你可以做同样的事情:
最好切换到MVVM方法并绑定DataGrid.SelectedItem和TextBox.Text来查看模型属性。