c# - 无法从 DataGrid 中获取选定的行值
问题描述
我在下面写了从选定行特定的单元格值中获取值。但它不起作用。我已经尝试了很多,尽管相同的代码在我的项目其他页面中工作。下面是代码,这里是堆栈跟踪:
private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
DataGrid gd = (DataGrid)sender;
DataRowView rowSelected = gd.SelectedItem as DataRowView;
label16.Content = Convert.ToString(rowSelected["quantity"]);
}
解决方案
gd.SelectedItem
不是 DataRowView,因为类型转换后rowSelected
是null
. 很可能它是匿名类型对象(例如,如果 ItemsSource 是从 Entity Framework 查询结果中设置的)
除非您将 ItemsSource 类型更改为 DataView,否则我可以推荐 2 个选项:
使用dynamic
类型:
private void dg_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
DataGrid gd = (DataGrid)sender;
dynamic rowSelected = gd.SelectedItem;
label16.Content = rowSelected.quantity;
}
使用绑定:
private void dg_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
DataGrid gd = (DataGrid)sender;
BindingOperations.SetBinding(label16, Label.ContentProperty, new Binding("quantity") { Source = gd.SelectedItem });
}
推荐阅读
- parquet - 在 Druid 中上传 Parquet 文件
- fullcalendar - 具有动态可见范围的自定义视图
- javascript - 如何通过滚动使标题的背景不透明
- windows - 写在ESP下面是否有效?
- xamarin.forms - 使用 Sqlite-net-pcl 创建多个表
- c# - 在 IIS 远程服务器 C# WCF 上找不到 DLL
- sql - 从嵌套表类型中选择一行
- javascript - 如何更改角度应用程序的 nginx 配置文件
- r - ggplot2 饼图标记中的意外行为
- lotus-notes - 由于来自 Lotus domino 服务器的中继电子邮件而导致的路由循环