用DataTable.RejectChanges 方法:
C#
回滚自该表加载以来或上次调用 AcceptChanges 以来对该表进行的所有更改。
[C#]
public void RejectChanges();备注
调用 RejectChanges 时,任何仍处于编辑模式的 DataRow 对象将取消其编辑。新行被移除。DataRowState 设置为 Modified 或 Deleted 的行返回到其初始状态。

解决方案 »

  1.   

    RejectChanges的方法是对整个表进行回滚,如果只需要回滚当前的行又怎么办?
      

  2.   

    DataRow.RejectChanges 方法  [C#]拒绝自上次调用 AcceptChanges 以来对该行进行的所有更改。
    public void RejectChanges();
    备注
    当调用 RejectChanges 方法时,CancelEdit 方法被隐式调用以取消任何编辑。如果 RowState 是“已删除”或“已修改”,则该行恢复为其以前的值,RowState 变成“未更改”。如果 RowState 是“已添加”,则该行将被移除。示例
    [C#] 
    private void DemonstrateDeleteRow(){
       // Create a simple DataTable with two columns and ten rows.
       DataTable myTable = new DataTable("myTable");
       DataColumn c1 = new DataColumn("id",Type.GetType("System.Int32"));
       c1.AutoIncrement=true;
       DataColumn c2 = new DataColumn("item", Type.GetType("System.String"));
       myTable.Columns.Add(c1);
       myTable.Columns.Add(c2);
       // Add ten rows.
       DataRow newRow;
            
       for(int i = 0; i <10; i++){
          newRow = myTable.NewRow();
          newRow["item"] = "Item " + i;
          myTable.Rows.Add(newRow);
       }
       myTable.AcceptChanges();
       // Create a DataView with the table.
       DataRowCollection rc = myTable.Rows;
       rc[0].Delete();
       rc[2].Delete();
       rc[3].Delete();
       rc[5].Delete();
       Console.WriteLine(rc[3].RowState.ToString());
       // Reject changes on one deletion.
       rc[3].RejectChanges();
       // Change the value of the column so it stands out.
       rc[3]["item"] = "Deleted, Undeleted, Edited";
       // Accept changes on others.
       myTable.AcceptChanges();
       // Print the remaining row values.
       foreach(DataRow r in myTable.Rows){
          Console.WriteLine(r[0] + "\t" + r[1]);
       }
    }
      

  3.   

    用DataRow.RejectChanges 就可以了,这个可以恢复删除行.