Foxtable(狐表)用户栏目专家坐堂 → [求助]克隆行时DataRowAdding中Nothing为何无效-已解决


  共有3864人关注过本帖树形打印复制链接

主题:[求助]克隆行时DataRowAdding中Nothing为何无效-已解决

帅哥哟,离线,有人找我吗?
shenyl0211
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
[求助]克隆行时DataRowAdding中Nothing为何无效-已解决  发帖心情 Post By:2013/8/1 8:50:00 [只看该作者]

如题,在全局表的DataRowAdding(解决办法:放在DataRowAdded)事件中代码如下,希望克隆行时用Nothing将复核人、复核日期、审批人、审批日期清空,但无效,不过可以用非空数据:

Select Case e.DataTable.Name 
      Case "出差管理"
        e.DataRow("填写日期") = Date0 '获取的服务器日期
        e.DataRow("经办人") = _UserName '登录用户名

        e.DataRow("复核人") = nothing '别的字符都行,但Nothing无效,下同

        e.DataRow("复核日期") = nothing  

        e.DataRow("审批人") = nothing

        e.DataRow("审批日期") = nothing    

End Select

[此贴子已经被作者于2013-8-1 11:18:38编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/8/1 8:53:00 [只看该作者]

该列设置了不能为空吧? 上个例子看看.

 回到顶部
帅哥哟,离线,有人找我吗?
shenyl0211
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
  发帖心情 Post By:2013/8/1 9:08:00 [只看该作者]

以下是引用Bin在2013-8-1 8:53:00的发言:
该列设置了不能为空吧? 上个例子看看.
起初必须为空,因为复核和审批是后来的事


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/8/1 9:10:00 [只看该作者]

上个例子看看吧

 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/8/1 9:19:00 [只看该作者]

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

 

想设置为Nothing的就不包含在数组中。


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/8/1 9:19:00 [只看该作者]

请将代码写在DataRowAdded事件中,而不是DataRowAdding事件。

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/8/1 9:23:00 [只看该作者]

以下是引用狐狸爸爸在2013-8-1 9:19:00的发言:

请将代码写在DataRowAdded事件中,而不是DataRowAdding事件。

 

 

晕,细节..

 回到顶部
帅哥哟,离线,有人找我吗?
shenyl0211
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
  发帖心情 Post By:2013/8/1 11:15:00 [只看该作者]

我也晕!DataRowAdding中能执行的代码,在DataRowAdded中也能执行;而前者不能执行的代码,后者也能执行。在后者中,插入行、添加行、克隆行都一样。那DataRowAdding还有用吗?


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/8/1 11:17:00 [只看该作者]

DataRowAdding

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


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/8/1 11:19:00 [只看该作者]

克隆行的过程是:

 

1、执行DataRowAdding事件

2、从被克隆的行赋值数据到新的行

3、执行DataRowAdded事件。

 

 

明白了?


 回到顶部
总数 13 1 2 下一页