因此,我得到了一个数据表,其中填充了 SQL 查询,并设置为数据网格的项目源。我想在数据表中的数据网格上找到所选项目并将其添加到新项目中。很抱歉,我知道这可能是一个愚蠢的简单问题,我只是无法理解它,我假设我是否能找到所选项目的索引我可以使用它来访问 datatable.rows[x],但是在我的情况下,用户正在过滤数据网格中的项目,因此必须在我创建的相应数据视图中查找才能执行此操作文本过滤。
编辑:
private void btnAddPart_Click(object sender, RoutedEventArgs e)
{
var item = (DataRowView)dgDocParts.SelectedItem;
if (item != null)
{
DataRow row = item.Row;
dtDocParts.Rows.Add(row);
}
dgDocParts.ItemsSource = dtDocParts.AsDataView();
}
出于某种原因,在以下答案的帮助下,此代码仍然不显示我尝试添加到数据网格中的新数据表的行。
您可以使用 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;
}