获取筛选的数据网格中所选行的索引

本文关键字:索引 网格 筛选 数据 数据网 获取 | 更新日期: 2023-09-27 18:31:57

我在WinForms中使用DataGrid类并使用RowFilter过滤数据。

//docRows = some DataTable
dgDocRow.DataSource = docRows;
docRows.DefaultView.RowFilter = "WHERE ID > 1"

现在网格仅显示筛选的行

当我想访问网格中的选定行时,我使用

int i = docRows.CurrentRowIndex;
DataRow dr = ((DataTable)docRows.DataSource).Rows[i];

但是,这将返回不正确的数据,因为docRows.CurrentRowIndex在筛选的 DataGrid 中为我提供了索引,并使用((DataTable)docRows.DataSource).Rows[i]从原始数据源中选择

的选择,而原始数据源未进行筛选。

如何在新的筛选数据源中获取正确的行/行索引?(无需遍历整个表,这就是我现在的做法)

谢谢,兹比内克

获取筛选的数据网格中所选行的索引

您可以通过 BindingContext 和 BindingManagerBase 的 Current 属性获取当前行。

// dgDocRow is DataGrid
BindingManagerBase bm = this.dgDocRow.BindingContext[this.dgDocRow.DataSource, this.dgDocRow.DataMember];
DataRow dr = ((DataRowView)bm.Current).Row;