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
{
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;
}