DataTable dt = ((DataTable)dataGridView1.DataSource).Copy();
我从DataGridview删除行后,我在读取dt时遇到错误。 " DeletedRowInaccessibleException"
如何将未删除的行复制到datatable?
答案 0 :(得分:2)
DataTable gridTable = (DataTable)dataGridView1.DataSource;
//you can call AcceptChanges() if you want !
//create data table with the same schema as gridTable !
DataTable dt = gridTable.Clone();
foreach(DataRow row in gridTable.Rows)
{
if(row.RowState == DataRowState.Deleted)
continue;
//import every row from the gridTable to the new DataTable.
dt.ImportRow(row);
}
这是一种方法。
答案 1 :(得分:2)
您要求不复制已删除的行,然后您可以写
DataTable source = (DataTable)dataGridView1.DataSource;
DataTable dt = source.Rows
.Cast<DataRow>()
.Where(x => x.RowState != DataRowState.Deleted)
.CopyToDataTable();
此解决方案使用IEnumerable extensions Cast创建一系列DataRows,Where condition检查RowState。 然后使用CopyToDataTable扩展名
在DataTable中重新实现序列