使用 DataGridView.SelectedRows 作为另一个 DataGridView 的数据源

本文关键字:DataGridView 数据源 另一个 SelectedRows 使用 | 更新日期: 2023-09-27 17:55:24

我想使用一个 DataGridView 中的用户选择的行作为第二个 DataGridView 的数据源。注意 这两个 DataGridView 将具有相同的列。

显然,我可以遍历选定的行,获取键值,然后重新查询数据库以用作第二个网格的数据源的列表,但这似乎很蹩脚。

当然,有一种优雅的方法可以简单地将 SelectedRows 集合重用为数据源吗?

使用 DataGridView.SelectedRows 作为另一个 DataGridView 的数据源

不能直接将DataRow集合设置为数据源,可以从MSDN

做(位)传统方式怎么样?

var dt = ((DataTable)dataGrid1.DataSource).Clone();
foreach (DataGridViewRow row in dataGrid1.SelectedRows)
{
     dt.ImportRow(((DataTable)dataGrid1.DataSource).Rows[row.Index]);
}
dt.AcceptChanges();
dataGrid2.DataSource = dt;

另一种使用 CopyToDataTable 方法执行此操作的方法。

DataTable dtable2;
DataRow[] rowArray = dataGridView1.SelectedRows;
If !(rowArray.Length == 0 )
{
    dTable2 = rowArray.CopyToDataTable();
}
dataGrodView2.DataSource = dTable2;

感谢您的回复。似乎没有一个很简单的方法。

我是这样做的:

MyDatGridView.SelectedRows.Cast<DataGridViewRow>().Select(dgvr => (int)dgvr.Cells[0].Value).ToList());

然后我尝试将结果列表与 .包含在 .where 子句。