DataRowAdding

增加一行时执行,此时新增行(DataRow)已经创建,但并未真正增加到DataTable中,通常在此处对新增行进行默认值的设置。

e参数属性: 

DataTable:返回增加行的数据表。
DataRow:  返回新增加的行。

示例一

例如希望新增行的日期设为当前系统日期,姓名设为当前登录用户名,可以将DataRowAdding事件的代码设置为:

e.DataRow("日期") = Date.Today()
e.
DataRow("姓名"
) = User.Name

示例二

假定表中有一个编号列,希望新增行的时候,编号列能够自动加1,可以将DataRowAdding事件的代码设置为:

e.DataRow("编号") = e.DataTable.Compute("Max(编号)") + 1

这个例子其实没有什么意义的,对于外部表使用自动增量主键列,对于内部表使用表达式列引用内部编号列“_Identify”,是更好的选择。

示例三

如果希望新增行能够自动从最后一行复制全部内容,可以将DataRowAdding事件的代码设置为:

If e.DataTable.DataRows.Count = 0 Then '如果是一个空表
    Return
'那么返回

End
If
Dim
dr As DataRow = e.DataTable.DataRows(e.DataTable.DataRows.Count - 1) '获得最后一行
For
Each dc As DataCol In e.DataTable.DataCols
   
e.DataRow(dc.Name) = dr(dc.Name) '将最后一行的内容复制到新增行中.
Next

示例四

上面的代码是复制所有列,如果只是复制部分列,可以参考下面的代码:

If e.DataTable.DataRows.Count = 0 Then '如果是一个空表
   
Return '那么返回
End
If
Dim
ColNames As String() = {"日期","客户","雇员"} '定义一个数组,保存复制列的名称
Dim
dr As DataRow = e.DataTable.DataRows(e.DataTable.DataRows.Count - 1) '获得最后一行
For
Each ColName As String in ColNames
    e.
DataRow(ColName) = dr(ColName) '将最后一行的内容复制到新增行中.

Next


本页地址:http://www.foxtable.com/webhelp/topics/0630.htm