【问题标题】:how to get all rows of a ultragrid even deleted rows如何获取超网格的所有行甚至删除的行
【发布时间】:2012-08-21 03:55:44
【问题描述】:

我想获取 Ultragrid 的所有行,甚至删除行。我使用以下代码只选择了该网格的一列,但它导致了错误:

“已删除的行信息无法通过行访问。”

((DataTable)grid1.DataSource).AsEnumerable()
                             .Select(row => row.Field<String>("filedName"))
                             .ToList();

我已经使用.AcceptChanges() 解决了这个错误,但现在结果不包含已删除的行。

谁能帮我获取所有行,包括这个超网格的已删除行?

【问题讨论】:

    标签: c# datatable infragistics ultrawingrid


    【解决方案1】:

    对 DataRow 应用 Delete 方法后,无法直接访问它。 如果您调用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,
       }
    }
    

    另外,如果您只对已删除的行感兴趣,您可以通过这种方式更改上面的代码,以从原始表中提取已删除行的子集。

    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
        .....
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-28
      • 2020-01-14
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      相关资源
      最近更新 更多