DataRow对象的RowState和DataRowVersion属性特点
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
{
row = table.NewRow();
// Detached row.
Console.WriteLine("New Row " + row.RowState);
if (row.HasVersion(DataRowVersion.Original))
Console.WriteLine("New Row " + "XXXXXXXXXXXXXXXXXXX");
// AddRow row.
Console.WriteLine("AddRow " + row.RowState);
if (row.HasVersion(DataRowVersion.Original))
Console.WriteLine("AddRow " + "XXXXXXXXXXXXXXXXXXX");
// Unchanged row.
Console.WriteLine("AcceptChanges " + row.RowState);
if (row.HasVersion(DataRowVersion.Original))
Console.WriteLine("AcceptChanges " + "XXXXXXXXXXXXXXXXXXX");
// Modified row.
Console.WriteLine("Modified " + row.RowState);
if (row.HasVersion(DataRowVersion.Original))
Console.WriteLine("Modified " + "XXXXXXXXXXXXXXXXXXX");
// 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;
}
DataRow对象的RowState和DataRowVersion属性特点相关推荐
- 行DataRow对象的属性和方法
DataRow对象的常用属性: HasError--确定行是否包含错误. Item--通过指定行的列数,读取行内的数据,如Item(2),就是读取第3个数据. ItemArray--获取或设置行中所有 ...
- 行(DataRow)对象四种行版本:Current! Original! Proposed! Default!
DataRow对象有两个比较重要的属性,分别是行状态(RowState)和行版本(DataRowVersion),通过这两个属性能够有效的管理表中的行.下面简要的介绍一下行状态和行版本的特点和关系. ...
- Selenium提取数据之标签对象提取文本内容和属性值
Selenium提取数据之标签对象提取文本内容和属性值 find_element仅仅能够获取元素,不能够直接获取其中的数据,如果需要获取数据需要使用以下方法 对元素执行点击操作element.clic ...
- php protected 属性,PHP实现在对象之外访问其私有属性private及保护属性protected的方法...
本文实例讲述了PHP实现在对象之外访问其私有属性private及保护属性protected的方法.,具体如下: public 表示全局的访问权限,类内部外部子类都可以访问: private表示私有的访 ...
- C# CAD对象 构造时应把它的父对象也加进它的属性里
C# CAD对象 构造时应把它的父对象也加进它的属性里 因为你要根据这一级找它的上一级 转载于:https://www.cnblogs.com/houlinbo/archive/2009/08/2 ...
- JavaScript 判断对象中是否有某属性
一.点( . )或者方括号( [ ] ) 通过点或者方括号可以获取对象的属性值,如果对象上不存在该属性,则会返回undefined.当然,这里的"不存在"指的是对象自身和原型链上都 ...
- python修改类的属性值_python 四种方法修改类变量,实例对象调用类方法改变类属性的值,类对象调用类方法改变类属性的值,调用实例方法改变类属性的值,直接修改类属性的值...
三种方法修改类变量,实例对象调用类方法改变类属性的值,类对象调用类方法改变类属性的值,调用实例方法改变类属性的值,类名就是类对象,city就是类变量, #coding=utf-8 class empl ...
- 事件参数对象下的几个属性 mouseenter与mouseover的区别
事件参数对象下的几个属性 <!DOCTYPE html> <html lang="en"> <head><meta charset=&qu ...
- 判断一个js对象,是否具有某个属性
一个对象,想必我们关注的最多的应该是它上面的属性有哪些吧.那么,怎么判断一个对象是否具有某个属性呢? 1 /*下面是一个对比,看看在判断是否包括一个键上面,Object结构和Set结构的写法不同.*/ ...
最新文章
- 蚂蚁金服×西安银行 | 西安银行手机银行App的智能升级之路
- Tramp data In Kernel
- SpringBoot项目遇到的一些问题
- java上传和下载文件代码_JavaWeb中上传和下载文件实例代码
- 【渝粤题库】陕西师范大学202421 教育管理心理学 作业 (专升本)
- jquery 获取tr里的值_jquery获取tr中控件值并操作tr实现思路
- openssh 加固
- php提取汉字拼音首字母,php获取汉字拼音首字母的函数(真正可以使用的)
- 使用loadrunner录制winsock协议的程序(原创)
- java安装教程详细
- 安装Flash Builder4.6遇到的问题
- java-合并两个有序链表
- 谈谈培训机构的“骗局“给新人一些建议
- 【国产RX解码】XS9922A 四通道多合一同轴高清解码芯片 功能对标TP9930
- 关于tomcat启动出现To prevent a memory leak, the JDBC Driver has been forcibly unregistered.问题
- 苹果邮箱登录入口_电子邮箱的申请及使用说明
- 伯恩半导体 - ESD 选型指南
- 飞机大战(C语言版)
- 重庆大学计算机科学与工程学院,何中市
- 解决微信小程序 wx.request 方法不支持 Promise 并发数问题
热门文章
- WWDC20 CoreImage 专题
- 【Android开发】Android概述
- RPC or noRPC,这是个问题
- inventor导出tekla_Inventor iLogic - 批量导出PDF,DXF,DWF
- 安卓模拟器可访问电脑ip配置
- 计算机图形学专业术语
- $.ajax() 参数详解
- 单招报计算机要考什么,单招考试一般都考什么内容
- 大数据与区块链的联系与区别
- 红米note4X_高通版(2016101)_官方线刷包_救砖包_解账户锁