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

ItemArray DataRow对象的RowState和DataRowVersion属性特点的更多相关文章

  1. DataRow对象的RowState和DataRowVersion属性特点

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

  2. DataRow对象的行状态(RowState)和行版本(DataRowVersion)属性

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

  3. DataGridView如何绑定DataRow对象集合

    DataGridView对象是我们在进行Winform程序开发中经常使用的呈现数据的控件,而数据则是通过DataSource这个Property来设置的.根据MSDN的说明,DataGridView对 ...

  4. Phaser中很多对象都有一个anchor属性

    游戏要用到的一些图片.声音等资源都需要提前加载,有时候如果资源很多,就有必要做一个资源加载进度的页面,提高用户等待的耐心.这里我们用一个state来实现它,命名为preload. 因为资源加载进度条需 ...

  5. js最好的继承机制:用对象冒充继承构造函数的属性,用原型prototype继承对象的方法。

    js最好的继承机制:用对象冒充继承构造函数的属性,用原型prototype继承对象的方法. function ClassA(sColor) { this.color = sColor; } Class ...

  6. 如何在获取Datarow对象在其所属DataTable中的Index

    做项目的时候需要先select一个DataTable的子集,后来又需要子集中这些DataRow的Index, 这个需求本来就有些奇怪,网上也没搜到.刚开始走了很多弯路,后来发现一个简便方法 'dr是你 ...

  7. js怎样推断一个对象{}是否为空对象,没有不论什么属性

    js怎样推断一个对象{}是否为空对象,没有不论什么属性 前段时间用js写了一个相似"angularjs"用于数据绑定的东西,功能是比較简单了, 通常应该传进来的是一个ArrayLi ...

  8. JavaScript 判断对象中是否有某属性

    判断对象中是否有某属性的常见方式总结,不同的场景要使用不同的方式. 一.点( . )或者方括号( [ ] ) 通过点或者方括号可以获取对象的属性值,如果对象上不存在该属性,则会返回undefined. ...

  9. java list按照 对象 指定多个字段属性进行排序

    ListUtils.Java---功能类 package PjectUtils; import java.lang.reflect.Field; import java.text.NumberForm ...

随机推荐

  1. webpack学习(五)—webpack+react+es6(第1篇)

    如果你看过webpack学习系列的前一个文章,接下来做的东西会比较简单 :webpack学习(四)— webpack-dev-server react发展的很快,现在大部分开发react相关的项目,都 ...

  2. Apache_安装

    1.下载安装包 网址:https://www.apachelounge.com/download/,下载你需要的安装包 2.解压文件到指定安装目录 3.修改配置文件 使用文本编辑器打开配置文件 con ...

  3. PAT_A1151#LCA in a Binary Tree

    Source: PAT A1151 LCA in a Binary Tree (30 分) Description: The lowest common ancestor (LCA) of two n ...

  4. 【剑指Offer】3、从尾到头打印链表

      题目描述:   输入一个链表,按链表值从尾到头的顺序返回一个ArrayList.   解题思路:   (三种方法:借助栈.递归.列表的首位插入)   从头到尾打印链表比较简单,从尾到头很自然的可以 ...

  5. lua_自己对“lua函数”知识点的总结

    lua_自己对“lua函数”知识点的总结 1.lua函数的定义 --lua中,函数都是function类型的对象.(1)其可以被比较 (2)其可以赋值给一个对象(3)可以传递给函数(4)可以从函数中返 ...

  6. C#第十五节课

    函数复习 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System. ...

  7. 天翼云 RDS数据库操作

    1.RDS数据库创建好之后点击RDS实例管理找到已下信息 官方文档 -1:http://www.ctyun.cn/help/qslist/567 官方文档 -2:http://www.ctyun.cn ...

  8. 14.Idea在html里面的快捷键

    1.IntelliJ-Idea里常用的快捷键 Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/*…*/ ) Shift+F6 重构-重命名 Ctrl+X 删除行 Ctrl+D 复制行 C ...

  9. 微信小程序获取登录手机号

    小程序获取登录用户手机号. 因为需要用户主动触发才能发起获取手机号接口,所以该功能不由 API 来调用,需用 <button> 组件的点击来触发. 首先,放置一个 button 按钮,将 ...

  10. dubbo-dubboAdmin安装(一)

    简介 Dubbo是什么? dubbo是阿里开源的分布式服务治理框架,对服务的负载均衡,权重,监控,路由规则,禁用启用的管理,以及服务的自动注册和发现 分布式架构下面临问题 在分布式架构下,我们会将一个 ...