如何获取DataGridViewRowSelectedRowCollection中的列

好吧,我认为这会比现在更容易。如何获取DataGridViewRowSelectedRowCollection中的列

public static DataRowCollection ToRows(this DataGridViewSelectedRowCollection Rows) 

{

DataTable table = new DataTable();

foreach (DataColumn column in Rows[0].DataGridView.Columns)

{

table.Columns.Add(column);

}

foreach (DataGridViewRow row in Rows)

{

DataRow newRow = ((DataRowView)row.DataBoundItem).Row;

table.ImportRow(newRow);

}

return table.Rows;

}

我想获取DataGridViewSelectedRowCollection中的行的列。上面的代码在table.Columns.Add(column)上抛出一个InvalidCast错误,因为它试图将DataGridViewColumns转换为DataTable列。我没有访问DataGridView,因为我处于扩展DataGridViewSelectedRowCollection并且无权访问DataGridView的静态方法。

如何将列集合转换为DataColumns对象?

回答:

您可以创建一个扩展方法将数据行返回网格的选定行的背后是这样的:

public static class DataGridViewExtensions 

{

public static List<DataRow> ToDataRows(this DataGridViewSelectedRowCollection Rows)

{

if (Rows == null || Rows.Count == 0)

return null;

return Rows.Cast<DataGridViewRow>()

.Where(x => x.DataBoundItem is DataRowView)

.Select(x => ((DataRowView)(x.DataBoundItem)).Row).ToList();

}

}

然后从DataRow类型的row变量得到的值,可以考虑使用这些选项:

  • row.ItemArray包含所有列的值
  • row[index]由索引
  • 得到一个列的值

  • row["column name"]获得通过列名的列值
  • row.Table.Columns包含DataTable

以上是 如何获取DataGridViewRowSelectedRowCollection中的列 的全部内容, 来源链接: utcz.com/qa/259397.html

回到顶部