Foxtable(狐表)用户栏目专家坐堂 → 开发宝典之疑问一,DataColChanging验证,繁琐吗?


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

主题:开发宝典之疑问一,DataColChanging验证,繁琐吗?

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


加好友 发短信
等级:小狐 帖子:381 积分:3456 威望:0 精华:0 注册:2011/5/9 12:45:00
开发宝典之疑问一,DataColChanging验证,繁琐吗?  发帖心情 Post By:2019/2/26 17:07:00 [只看该作者]

如题,图片
图片点击可在新窗口打开查看


DataColChanged事件中将


Select case e.DataCol.Name
      Case "客户ID","折扣"
      dim dr as DataRow = e.DataRow
      Dim pr as DataRow = DataTables("客户").Find("客户ID = '" & dr("客户ID") &  "'")
      IF pr IsNot Nothing AndAlso pr("客户等级") = "vip"
         if dr("折扣") > 0.2 then
   dr("折扣") = 0.2
 end if
      elseIf dr("折扣") > 0.15 then
dr("折扣") = 0.15
       endif
end select

改到DataColChanging事件中

Select case e.DataCol.Name
      Case "客户ID","折扣"
      dim dr as DataRow = e.DataRow
      Dim pr as DataRow = DataTables("客户").Find("客户ID = '" & dr("客户ID") &  "'")
      IF pr IsNot Nothing AndAlso pr("客户等级") = "vip"
if e.NewValue > 0.2 then
     e.NewValue = 0.2
end if
      elseif  e.NewValue > 0.15 then
  e.NewValue = 0.15
      endif
end select
不就行了吗?麻烦吗?还是另有它意?
@狐狸爸爸  周老师说这部分是您写的,请您明示。

[此贴子已经被作者于2019/2/27 10:03:00编辑过]

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/26 17:29:00 [只看该作者]

不理解您说的繁琐是指什么意思?

在这里事件里dr("折扣")代表的是编辑前的数据,e.NewValue代表的是更改后的数据。如果要判断输入是否符合要求,当然是要判断更改后的数据

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/26 17:35:00 [只看该作者]

要判断列名吧?

 

If e.datacol.name = "折扣" Then

    'e.newvalue

End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/26 17:35:00 [只看该作者]

具体问题,做个例子上来,说明你要做什么。


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


加好友 发短信
等级:小狐 帖子:381 积分:3456 威望:0 精华:0 注册:2011/5/9 12:45:00
  发帖心情 Post By:2019/2/27 10:04:00 [只看该作者]

以下是引用有点甜在2019/2/26 17:35:00的发言:

具体问题,做个例子上来,说明你要做什么。




抱歉问题没说清楚,我重新编辑了下帖子,请过目。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/27 10:09:00 [只看该作者]

datacolchanging事件不行。

 

e.newvalue 的值,是修改的列的值,可能是 【客户id】,也可能是 【折扣】,除非你改成

 

Select case e.DataCol.Name
      Case "折扣"
      dim dr as DataRow = e.DataRow

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


加好友 发短信
等级:小狐 帖子:381 积分:3456 威望:0 精华:0 注册:2011/5/9 12:45:00
  发帖心情 Post By:2019/2/27 10:15:00 [只看该作者]

这是书上的例子,我只想问问把这段代码移到DataColChanging中行不行?另外书中说的繁琐什么意思??

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/27 10:23:00 [只看该作者]

改成,比如

 

Select Case e.DataCol.Name
    Case "折扣"
        Dim dr As DataRow = e.DataRow
        Dim pr As DataRow = DataTables("客户").Find("客户ID = '" & dr("客户ID") &  "'")
        If pr IsNot Nothing AndAlso pr("客户等级") = "vip"
            If e.NewValue > 0.2 Then
                e.NewValue = 0.2
            End If
        ElseIf  e.NewValue > 0.15 Then
            e.NewValue = 0.15
        End If
End Select


 回到顶部