M_M*_*abi 2 c# datatable infragistics ultrawingrid
我想得到一个超级网格甚至删除行的所有行.我使用以下代码只选择此网格的一列,但它导致错误:
"无法通过该行访问已删除的行信息."
((DataTable)grid1.DataSource).AsEnumerable()
.Select(row => row.Field<String>("filedName"))
.ToList();
Run Code Online (Sandbox Code Playgroud)
我曾经.AcceptChanges()
解决过这个错误,但现在结果不包含已删除的行.
任何人都可以帮我获取所有行,包括删除的超网格行?
在对其应用Delete方法后,无法直接访问DataRow.如果您调用AcceptChanges,那么此DataRow将从集合中删除,就像它从未存在过一样.(因此,如果您尚未更新数据库,则永远不会从数据库中删除该行)
要反转Delete方法的效果,唯一可能的方法是使用RejectChanges方法,但在此之后,不再删除该行.
我不能在LinQ中给你一个例子,但是,通常你需要做这样的事情
for(int x = 0; x < datatable.Rows.Count; x++)
{
DataRow r = dataTable.Rows[x];
if(r.RowState == DataRowState.Deleted)
{
r.RejectChanges();
.... //do you stuff
r.Delete(); // redelete the row,
}
}
Run Code Online (Sandbox Code Playgroud)
此外,如果您只对"已删除"行感兴趣,则可以通过这种方式更改上面的代码,从原始表中提取已删除行的子集.
DataTable deletedRowsTable = datatable.GetChanges(DataRowState.Deleted);
for(int x = 0; x < deletedRowsTable.Rows.Count; x++)
{
.....
// no more if needed here, because the rows are all deleted
.....
}
Run Code Online (Sandbox Code Playgroud)