DataGrid转换为DataRowView

3

当用户单击数据表格中的项目时,我需要从中提取项目价值并将其充电到数据行视图中,以获取第一个值"IdEmployee"并将其分配给变量。

这是我的方法,问题在于我的变量dataRowView为空!

我该如何解决这个问题?

private void _employeedataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    DataRowView dataRowView = _employeedataGrid.CurrentCell.Item as DataRowView;
    var idEmployee = Convert.ToInt32(dataRowView.Row[0]);

    .......
} 

嗨。我在WPF中遇到了相同的问题?你解决了你的问题吗? - Ezio Auditore da Firenze
4个回答

2

这就是你所需要的。

DataRowView view = _employeedataGrid.Items[_employeedataGrid.SelectedIndex] as DataRowView;

2

这是因为_employeedataGrid.CurrentCell.Item无法转换为DataRowView。为什么不尝试使用CurrentRow而不是CurrentCell呢?

private void _employeedataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    DataRowView dataRowView = _employeedataGrid.CurrentRow.Item as DataRowView;
    var idEmployee = Convert.ToInt32(dataRowView.Row[0]);
    .......
} 

4
我正在使用WPF,但没有"CurrentRow"选项..我该怎么办? - ale

0
            //during datagrid events like RowEditEnding, SelectionChange event 'e' will be very useful as...
            DataGridRow row1 = e.Row;
            int row_index = ((DataGrid)sender).ItemContainerGenerator.IndexFromContainer(row1);

            //or try this if works
            int i_row = e.Row.GetIndex();

考虑编辑您的问题并添加一些描述如何解决问题的文本,这将使您的答案对原始帖子和其他人更有用。 - Cleptus

0
只要选择了该项,您就可以直接获取每个列的值,而无需经过循环。第一列将具有索引Row.ItemArray [0],第二列将具有索引Row.ItemArray [1]等。这完全取决于您的任务。
var EmpID = Convert.ToInt32(((DataRowView)_employeedataGrid.SelectedItem).Row.ItemArray[0].ToString());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接