如何在 WPF C# 中的 DataGrid 的 TextBoxes 中获取选定的行值
Posted
技术标签:
【中文标题】如何在 WPF C# 中的 DataGrid 的 TextBoxes 中获取选定的行值【英文标题】:How to get the selected Row values in TextBoxes for DataGrid in WPF C# 【发布时间】:2021-12-02 00:11:49 【问题描述】:我想将数据网格中的选定行显示到一些文本框中。问题是它在转换为 DataRowView 时在第 4 行变为空。这是为什么呢?
1 private void dataGridView_SelectionChanged(object sender, SelectionChangedEventArgs e)
2
3 DataGrid grid = (DataGrid)sender;
4 DataRowView selected_row = grid.SelectedItem as DataRowView;
5
6 if (selected_row != null)
7
8 comboBoxCategory.Text = selected_row["Category"].ToString();
9 textBoxBrand.Text = selected_row["Brand"].ToString();
10 textBoxName.Text = selected_row["Name"].ToString();
11 textBoxCount.Text = selected_row["Count"].ToString();
12 textBoxPrice.Text = selected_row["Price"].ToString();
13
14
【问题讨论】:
感谢您在代码中添加了行号:clap 你在使用 mvvm,你是如何填充数据网格的? 您能否尝试SelectedRows
,然后SelectedRows[index]
对应的列
我认为它只是一个 DataRow 而不是整个 DataRowView
您的 DataGrid 项目不是DataRowView
类型,所以as
转换返回null
。很可能是某个模型类对象(具有ID
、Categorie
等属性)。您可以在调试模式下使用GetType
方法检查grid.SelectedItem
类型:i.ibb.co/KwLb7tJ/1.jpg。然后使用 as
的正确演员表。
【参考方案1】:
显然SelectedItem
属性不会返回DataRowView
。
假设你已经定义了一个类型,或者使用dynamic
关键字:
private void dataGridView_SelectionChanged(object sender, SelectionChangedEventArgs e)
DataGrid grid = (DataGrid)sender;
dynamic selected_row = grid.SelectedItem;
comboBoxCategory.Text = selected_row.Categorie.ToString();
textBoxBrand.Text = selected_row.Merk.ToString();
textBoxName.Text = selected_row.Naam.ToString();
textBoxCount.Text = selected_row.Aantal.ToString();
textBoxPrice.Text = selected_row.Prijs.ToString();
【讨论】:
以上是关于如何在 WPF C# 中的 DataGrid 的 TextBoxes 中获取选定的行值的主要内容,如果未能解决你的问题,请参考以下文章
c# wpf datagrid 模板列修改某个单元格,更新所选行另一个单元格的值,如何做到呢?
如何在我的 DataGrid 中获取所选单元格的当前列(C# WPF 应用程序)
c# wpf的datagrid列标题间的分割线,我加background后变成一大块黑色的,怎么变成间隔的一块一块的,如图