DataViewRowState 枚举

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=2Added表示新添的行)

   //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"]);

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值