获取与所选DataGridView行对应的所有数据行的集合

时间:2009-12-01 21:45:47

标签: c# winforms datagridview

是否有直接的方法来执行此操作,还是需要迭代DataGridView.SelectedRows,然后为每一行访问DataGridViewRow.DataBoundItem以创建一个?

2 个答案:

答案 0 :(得分:3)

DataGridView在未启用Linq的情况下不提供SelectedDataRows和SelectedRows,因此,您必须编写foreach循环。

答案 1 :(得分:0)

将“SelectedDataRows”添加到DataGridViews的通用扩展方法:

public static T[] SelectedDataRows<T>(this DataGridView dg) where T : DataRow
{
    T[] rows = new T[dg.SelectedRows.Count];
    for (int i = 0; i < dg.SelectedRows.Count; i++)
        rows[i] = (T)((DataRowView)dg.SelectedRows[i].DataBoundItem).Row;

    return rows;
}

这是通用的,因此您可以使用Typed Datasets返回键入的数据行。如果您愿意,您可以让自己只返回DataRow[]。这也假设您的DataGridView绑定了DataView