DataViewRowState 枚举
| 成员名称 | 说明 |
| Added | 一个新行。 |
| CurrentRows | 包括未更改行、新行和已修改行的当前行。 |
| Deleted | 已删除的行。 |
| ModifiedCurrent | 当前版本,原始数据(请参见 ModifiedOriginal)的修改版本。 |
| ModifiedOriginal | 原始版本(尽管它后来已被修改并以 ModifiedCurrent 形式存在)。 |
| None | 无。 |
| OriginalRows | 包括未更改行和已删除行的原始行。 |
| Unchanged | 未更改的行。 |
看了N久 还是不大明白其中的意思呵呵,经过代码验证 终于理解了 各个成员的含义
现在自己再次温习并详细说明下
static private void DemonstrateRowState()
{
// Create a DataTable with one column.
DataTable dataTable = new DataTable("dataTable");
DataColumn dataColumn = new DataColumn("dataColumn");
dataTable.Columns.Add(dataColumn);
// Add ten rows.
DataRow dataRow;
for (int i = 0; i < 10; i++)
{
dataRow = dataTable.NewRow();
dataRow["dataColumn"] = "item " + i;
dataTable.Rows.Add(dataRow);
}
dataTable.AcceptChanges();
// Create a DataView with the table.
DataView dataView = new DataView(dataTable);
//第一次求nCount 此时cCount=10全部来自于DataTable中的10条数据
int nCount = dataView.Count;
// Change one row's value:
dataTable.Rows[1]["dataColumn"] = "Hello";
// Add one row:
dataRow = dataTable.NewRow();
dataRow["dataColumn"] = "World";
dataTable.Rows.Add(dataRow);
int nCount = dataView.Count; //新添了1行所以此处nCount=11
//下面开始使用DataViewRowState的各个成员
//首先要说明的是在使用前我们对其中一条数据进行了更改 同时新添了一条数据
// Set the RowStateFilter to display only added and modified rows.
dataView.RowStateFilter = DataViewRowState.Added
| DataViewRowState.ModifiedCurrent;
int nCount = dataView.Count;
//此处nCount=2(Added表示新添的行)
//ModifiedCurrent 表示当前版本,原始数据(请参见 ModifiedOriginal)的修改版本
//也就是说大前提对于修改的数据行而言的,显示的是更改后的数据
//理解了这个后也就对于ModifiedOriginal不难理解了,他们都是对于修改的数据行而言的
//不过这个是显示的原始数据而已。
// Print those rows. Output = "Hello" "World";
PrintView(dataView, "ModifiedCurrent and Added");
// Set filter to display on originals of modified rows.
dataView.RowStateFilter = DataViewRowState.ModifiedOriginal;
PrintView(dataView, "ModifiedOriginal");
// Delete three rows.
dataTable.Rows[1].Delete();
dataTable.Rows[2].Delete();
dataTable.Rows[3].Delete();
// Set the RowStateFilter to display only Added and modified rows.
dataView.RowStateFilter = DataViewRowState.Deleted;
//Deleted 显示的是删除的行 即3 不过此处显示的是最原始的数据
//如上面把第2行有item 1变为Hello了,但是显示删除行信息时候还是item 1
PrintView(dataView, "Deleted");
//Set filter to display only current.
dataView.RowStateFilter = DataViewRowState.CurrentRows;
//CurrentRows就是现在DataView中包含的实实在在的数据行了
PrintView(dataView, "Current");
// Set filter to display only unchanged rows.
dataView.RowStateFilter = DataViewRowState.Unchanged;
//UnChanged 显示未更改的行 修改过1条和添加了1条应该不算的所以为7
PrintView(dataView, "Unchanged");
// Set filter to display only original rows.
dataView.RowStateFilter = DataViewRowState.OriginalRows;
//OriginalRows表示包括未更改行和已删除行的原始行 即10
//10个中因为现在有8行其中一行为新添的7行未更改行,删除了3行(虽然3行中有1行曾更改过)提示:删除的行要么是新添的要么是原来的数据行(不管更改是否)
PrintView(dataView, "OriginalRows");
}
static private void PrintView(DataView dataView, string label)
{
Console.WriteLine("/n" + label);
for (int i = 0; i < dataView.Count; i++)
{
Console.WriteLine(dataView[i]["dataColumn"]);
}
}