关键词搜索

源码搜索 ×
×

C# DataSet.RejectChanges 方法

发布2014-03-03浏览1712次

详情内容

        回滚自创建 DataSet 以来或上次调用 DataSet.AcceptChanges 以来对其进行的所有更改。
        调用 DataSet.RejectChanges 以针对由 DataSet 包含的所有 DataTable 对象调用 DataTable.RejectChanges 方法。
        由 DataSet 包含的每个 DataRow 对象都可通过调用 DataRow.BeginEdit 方法设置为编辑模式。 在调用 DataRow.EndEdit 方法之后,可通过针对 DataRow 对象所属的       DataTable 调用 DataTable.RejectChanges 来拒绝更改。
        DataTable.RejectChanges 方法被调用时,仍处于编辑模式的任何行将取消其编辑。 新行被移除。 已修改的和已删除的行返回到其原始状态 (DataRowState.Unchanged)。

        AcceptChanges 和 RejectChanges 仅适用于与 DataRow 相关的更改,即 Add、Remove、Delete 和 Modify。 它们不适用于架构和结构方面的更改。

代码如下(程序集:System.Data(在 system.data.dll 中)):

  1. public void RejectChanges()
  2. {
  3. IntPtr intPtr;
  4. Bid.ScopeEnter(out intPtr, "<ds.DataRow.RejectChanges|API> %d#\n", this.ObjectID);
  5. try
  6. {
  7. if (this.RowState != DataRowState.Detached)
  8. {
  9. if (this._columns.ColumnsImplementingIChangeTrackingCount != this._columns.ColumnsImplementingIRevertibleChangeTrackingCount)
  10. {
  11. DataColumn[] columnsImplementingIChangeTracking = this._columns.ColumnsImplementingIChangeTracking;
  12. for (int i = 0; i < columnsImplementingIChangeTracking.Length; i++)
  13. {
  14. DataColumn dataColumn = columnsImplementingIChangeTracking[i];
  15. if (!dataColumn.ImplementsIRevertibleChangeTracking)
  16. {
  17. object obj;
  18. if (this.RowState != DataRowState.Deleted)
  19. {
  20. obj = this[dataColumn];
  21. }
  22. else
  23. {
  24. obj = this[dataColumn, DataRowVersion.Original];
  25. }
  26. if (DBNull.Value != obj && ((IChangeTracking)obj).IsChanged)
  27. {
  28. throw ExceptionBuilder.UDTImplementsIChangeTrackingButnotIRevertible(dataColumn.DataType.AssemblyQualifiedName);
  29. }
  30. }
  31. }
  32. }
  33. DataColumn[] columnsImplementingIChangeTracking2 = this._columns.ColumnsImplementingIChangeTracking;
  34. for (int j = 0; j < columnsImplementingIChangeTracking2.Length; j++)
  35. {
  36. DataColumn column = columnsImplementingIChangeTracking2[j];
  37. object obj2;
  38. if (this.RowState != DataRowState.Deleted)
  39. {
  40. obj2 = this[column];
  41. }
  42. else
  43. {
  44. obj2 = this[column, DataRowVersion.Original];
  45. }
  46. if (DBNull.Value != obj2)
  47. {
  48. IChangeTracking changeTracking = (IChangeTracking)obj2;
  49. if (changeTracking.IsChanged)
  50. {
  51. ((IRevertibleChangeTracking)obj2).RejectChanges();
  52. }
  53. }
  54. }
  55. }
  56. this._table.RollbackRow(this);
  57. }
  58. finally
  59. {
  60. Bid.ScopeLeave(ref intPtr);
  61. }
  62. }


相关技术文章

最新源码

下载排行榜

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载