所以我得到了一个数据表,它被一个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,因为那样会给您给予错误,因为一行不能属于多个表。
1条答案
按热度按时间xkrw2x1b1#
可以使用DataGrid.SelectedItem属性。它有
object
类型,所以你需要将它转换为ItemsSource中的具体类型。在这种情况下,它将是DataRowView,因为ItemsSource是DataView对象。DataRowView包含一行的所有值,这些值可以通过列名或索引访问,但也有对原始行的引用: