如何访问与数据网格WPF中选定项对应的数据表行

92dk7w1h  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(125)

所以我得到了一个数据表,它被一个SQL查询填充,并被设置为数据网格的itemsource。我想在datatable中找到datagrid上选定的项目,并将其添加到一个新的项目中。对不起,我知道这可能是一个愚蠢的简单的问题,我只是不能把我的头周围,我假设如果我能找到所选项目的索引,我可以使用它来访问一个datatable.rows[x],然而,在我的情况下,用户正在过滤数据网格中的项目,所以必须在相应的数据视图中查找我创建,以便进行文本过滤。

private void btnAddPart_Click(object sender, RoutedEventArgs e)
    {
        var item = (DataRowView)dgParts.SelectedItem;
        if (item != null)
        {
            DataRow row = item.Row;
            dtDocParts.ImportRow(row);
        }

        dgDocParts.ItemsSource = dtDocParts.AsDataView();
    }

在下面的答案的帮助下,我能够写这个方法来做我需要的事情。请注意,我必须使用ImportRow而不是Add.Add,因为那样会给您给予错误,因为一行不能属于多个表。

xkrw2x1b

xkrw2x1b1#

可以使用DataGrid.SelectedItem属性。它有object类型,所以你需要将它转换为ItemsSource中的具体类型。在这种情况下,它将是DataRowView,因为ItemsSource是DataView对象。
DataRowView包含一行的所有值,这些值可以通过列名或索引访问,但也有对原始行的引用:

var item = (DataRowView)dgDocParts.SelectedItem;
if (item != null)
{
   object cellValue1 = item[0];
   object cellValue2 = item["columnName"];
   DataRow row = item.Row;
}

相关问题