zoukankan      html  css  js  c++  java
  • ItemArray DataRow对象的RowState和DataRowVersion属性特点

    DataTable.Rows[i].ItemArray
    DataTable.Rows表示所有行的集合
    DataTable.Rows[i]加上下标表示其中某一行
    DataTable.Rows[i].ItemArray表示将某一行的数据转换为一个数组,就相当于把这一行的数据一个一个放进数组里面,会返回一个object[]

    https://blog.csdn.net/haqer0825/article/details/7419541

     DataRow对象有两个比较重要的属性,分别是行状态(RowState)和行版本(DataRowVersion),通过这两个属性能够有效的管理表中的行。下面简要的介绍一下行状态和行版本的特点和关系。

    ü         行状态(RowState):

    l         UnChanged状态:指表中的行自创建之后没有做过任何改动的状态,或则是行在上次接受修改之后,至今未做过任何改动的状态。

    l         Added状态:该状态是指已经将行添加到表中,但是尚未调用表对象的AcceptChanged方法。调用AcceptChanged方法时,所有处在Added状态的行都变为Unchanged状态。

    l         Modified状态:该状态表示该行已经被修改。调用AcceptChanged方法时,所有处在Modified状态的行都变为Unchanged状态

    l         Deleted状态:该状态表示该行已经从表中删除,但是尚未调用表对象的AcceptChanged方法

    l         Detached状态:该状态表示该行不属于任何表,或则已经从表中分离出去了,不再属于任何表的DataRow对象。

    下面举例说行的变化状态。新建的行(DataRow对象)处于Detached状态,把它添加到DataTable对象之后,该DataRow对象的状态变为Added状态。如果对该DataRow进行了修改,则该行处于Modified状态。如果使用Remove方法从表中移除该DataRow对象,或则使用Delete方法和AcceptChanged方法移除该行,则该行处于Detached状态。

    ü         行版本(DataRowVersion)

       行(DataRow)对象有四种不同的行版本,分别是Current,Original,proposed和default。下面对这些行版本进行简要的说明。

    l           Current:表示行的当前值。处于deleted状态的行不存在该行版本。

    l           Original:表示行的原始值。处于Added状态的行不存在该行版本

    l           Proposed:表示行的建议值。不属于表的行,即处于Detached状态的行存在该行版本;对于正在进行编辑的行,也存在该行版本。

    l           Default:表示行的默认版本。处于Added,Modified或则Unchanged状态的行的默认行版本是current;处于deleted状态的行的默认行版本是original。处于Detached状态的行的默认版本是proposed。

    下面举例说明行状态和行版本的变化。当调用AcceptChanged方法,所有处于deleted状态的行将变为Detached状态,即被移除。其余的行会变为Unchanged状态,并且Original版本中的值会改写为current行版本的值。

     

    http://cyjwlj.spaces.live.com/blog/cns!61937147116f197a!148.entry

    DataRow的RowState和DataRowVersion.Original

    static void Main()
            {
                // Create a new DataRow.
                row = table.NewRow();
                // Detached row.
                Console.WriteLine("New Row " + row.RowState);
                if (row.HasVersion(DataRowVersion.Original))
                    Console.WriteLine("New Row " + "XXXXXXXXXXXXXXXXXXX");
                table.Rows.Add(row);
                // AddRow row.
                Console.WriteLine("AddRow " + row.RowState);
                if (row.HasVersion(DataRowVersion.Original))
                    Console.WriteLine("AddRow " + "XXXXXXXXXXXXXXXXXXX");
                table.AcceptChanges();
                // Unchanged row.
                Console.WriteLine("AcceptChanges " + row.RowState);
                if (row.HasVersion(DataRowVersion.Original))
                    Console.WriteLine("AcceptChanges " + "XXXXXXXXXXXXXXXXXXX");
                row["FirstName"] = "Scott";
                // Modified row.
                Console.WriteLine("Modified " + row.RowState);
                if (row.HasVersion(DataRowVersion.Original))
                    Console.WriteLine("Modified " + "XXXXXXXXXXXXXXXXXXX");
                row.Delete();
                // Deleted row.
                Console.WriteLine("Deleted " + row.RowState);
                if (row.HasVersion(DataRowVersion.Original))
                    Console.WriteLine("Deleted " + "XXXXXXXXXXXXXXXXXXX");
            }
            static DataTable MakeTable()
            {
                // Make a simple table with one column.
                DataTable table = new DataTable("table");
                DataColumn dcFirstName = new DataColumn(
                    "FirstName", Type.GetType("System.String"));
                table.Columns.Add(dcFirstName);
                return table;
            }
     
     
    output:
    New Row Detached
    AddRow   Added
    AcceptChanges Unchanged
    AcceptChanges XXXXXXXXXXXX
    Modified Modified
    Modified XXXXXXXXXXXX
    Deleted Deleted
    Deleted XXXXXXXXXXXX
  • 相关阅读:
    Python 多线程学习(转)
    自己使用python webob,paste.deploy,wsgi总结
    Python中*args 和**kwargs的用法
    python 数字和字符串转换问题
    python socket编程
    深入解读Quartz的原理
    解决get方法传递URL参数中文乱码和解决tomcat下中文乱码问题
    Tomcat的Manager显示403 Access Denied
    mysql5.6 linux下安装笔记
    Quartz应用与集群原理分析
  • 原文地址:https://www.cnblogs.com/SSs1995/p/9617511.html
Copyright © 2011-2022 走看看