AcceptChanges()RowState 会被设置为“ Unchanged ”AcceptChanges()DataRow 或 DataTable 时,DataRowVersion 将设置为“原始”。您可以说原始意味着已接受所有更改。我创建了一个小示例程序,它显示了动作的变化,以澄清差异。
class Program {
static void Main(string[] args) {
var table = new DataTable("MyTable");
table.Columns.Add(new DataColumn("MyColumn"));
var row = table.NewRow();
Console.WriteLine($"Rowstate: {row.RowState}"); //Prints Detached
table.Rows.Add(row);
Console.WriteLine($"Rowstate: {row.RowState}"); //Prints Added
table.AcceptChanges();
Console.WriteLine($"Rowstate: {row.RowState}"); //Prints Unchanged
row.BeginEdit();
row[0] = "NewValue";
row.EndEdit();
Console.WriteLine($"Rowstate: {row.RowState}"); //Prints Modified
if (row.HasVersion(DataRowVersion.Current)) { // Does the row contain uncommited values?
Console.WriteLine($"DataRowVersion: {DataRowVersion.Current}"); //Prints Current
}
table.AcceptChanges(); //Commit all DataRowChanges
if (row.HasVersion(DataRowVersion.Original)) {
Console.WriteLine($"DataRowVersion: {DataRowVersion.Original}"); //Prints Current
}
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
关于DataRowStates的 msdn 文档实际上解释得很好。它提供了关于每个状态的简短说明以及一些示例代码。那是为同一DataRowVersions。您绝对应该看看这两篇文章。
引自链接的 MSDN 文章:
调用 DataRow 对象的 BeginEdit 方法后,如果更改该值,则 Current 和 Proposed 值变为可用。
调用 DataRow 对象的 CancelEdit 方法后,Proposed 值被删除。
调用 DataRow 对象的 EndEdit 方法后,Proposed 值变为 Current 值。
调用 DataRow 对象的 AcceptChanges 方法后,原始值变为与当前值相同。
调用 DataTable 对象的 AcceptChanges 方法后,原始值变为与当前值相同。
调用DataRow 对象的RejectChanges 方法后,Proposed 值被丢弃,版本变为Current。
| 归档时间: |
|
| 查看次数: |
3294 次 |
| 最近记录: |