Foxtable(狐表)用户栏目专家坐堂 → datecolchanging 事件代码为什么会执行两遍?


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

主题:datecolchanging 事件代码为什么会执行两遍?

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


加好友 发短信
等级:六尾狐 帖子:1218 积分:8451 威望:0 精华:0 注册:2016/2/2 21:52:00
datecolchanging 事件代码为什么会执行两遍?  发帖心情 Post By:2018/8/30 16:03:00 [只看该作者]

下面这段代码放在表的datecolchanging事件中,可是会执行两遍,第一遍,弹出  文件改名成功!  第二遍弹出  文件改名失败!  为什么会执行两遍?
'用户直接在表格中操作改文件名
If e.OldValue IsNot Nothing  AndAlso e.NewValue IsNot Nothing   Then     '只有改名前且改名后的内容都不为空才进行下面的判断(防止新上传文件或删除文件也弹出下面改名失败的提示)  
   If e.DataCol.Name="问题或需求_附件" Then
       'Dim dr As DataRow= e.DataRow
        '下载数据
        Dim ftp1 As new ftpclient
        ftp1.host="172.1.1.1"
        ftp1.Account = "administrator"
        ftp1.password = "1234"
        ftp1.RootDir="/各表附件/问题或需求跟踪表/"   
 

            Dim str_NewName As String=e.NewValue
            If str_NewName.Contains(e.DataTable.Name & "_ID" & e.DataRow("ID"))  Then
    msgbox("进入")
               If ftp1.Rename(e.OldValue,e.NewValue)=True Then
                 msgbox("文件改名成功!")
                 e.DataRow(e.DataCol.Name)=e.NewValue    '因为datacolchanging事件时 新值还没有写入表格中,所以要手动用代码写入
                 'e.DataTable.Save()    
                 e.DataRow.Save
               Else 
    msgbox(str_newname)
                 msgbox("文件改名失败!")
                 e.Cancel=True
               End If 
            Else
               msgbox("修改的文件名不符合命名要求,请重新修改!")
               e.Cancel=True     
            End If
   
    End If
End If

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


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

1、如果你修改以后需要保存,你应该写到datacolchanged事件去。

 

datacolchanged不能用e.cancel=true,但可以写 e.DataRow(e.DataCol.Name)=e.oldvalue

 

2、尝试暂停事件执行 http://www.foxtable.com/webhelp/scr/2218.htm

 


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


加好友 发短信
等级:六尾狐 帖子:1218 积分:8451 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2018/8/30 16:35:00 [只看该作者]

问题是为什么datacolchanging 会执行两遍呢?

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


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

因为执行了这个代码,每次赋值都会触发事件

 

e.DataRow(e.DataCol.Name)=e.NewValue


 回到顶部