以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  克隆行和DataColChanging事件冲突  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=187430)

--  作者:puma
--  发布时间:2023/7/18 9:56:00
--  克隆行和DataColChanging事件冲突
窗口 按钮 克隆行 提示MessageBox 提示iD已经存在,数据可以正确写入

表DataColChanging   ID自动+1,如果id重复提示 MessageBox.Show ("iD已经存在", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)


我的需求是:克隆行的时候,不触发表DataColChanging 事件,或者其他解决方案

克隆行参考
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=91474


--  作者:有点蓝
--  发布时间:2023/7/18 10:02:00
--  
请贴出所有相关的事件代码说明问题:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=150626
--  作者:puma
--  发布时间:2023/7/18 10:11:00
--  
\'窗口 按钮单击事件
Dim val As Integer 
val = DataTables("表").SQLCompute("max(ID)") + 1
\'当前行最大值
Dim max As Integer = DataTables("表").Compute("max(ID)") + 1
Dim valmax As Integer
If val > max Then
    valmax = val
Else
    valmax = max
End If
Dim r As Row = Tables("表").Current
Dim dnew As Row = Tables("表").AddNew
Dim name As String = r("ID") 
For Each c As Col In Tables("表").Cols
    If c.Name = "ID" Then
\'        MessageBox.show(valmax)
        dnew(c.Name) = valmax
    ElseIf c.Name = "条件" Then
         dnew(c.Name) = Nothing
    ElseIf c.Name <> "_Identify" Then
        dnew(c.Name) = r(c.Name)
    End If
Next






\'DataColChanging事件

Select Case e.DataCol.Name
    Case "ID"
        If e.NewValue IsNot Nothing Then
            Dim dr As DataRow = e.DataTable.Find("id = \'" & e.NewValue & "\' ")
            If dr IsNot Nothing Then
                StatusBar.Message1 = "此iD已经存在"
                e.Cancel = True
            End If 
        End If

        
End Select


--  作者:有点蓝
--  发布时间:2023/7/18 10:23:00
--  
调试按钮MessageBox.show(valmax)弹出什么内容

\'DataColChanging事件增加调试代码弹出什么内容

Select Case e.DataCol.Name
    Case "ID"
        If e.NewValue IsNot Nothing Then
msgbox(e.NewValue)
            Dim dr As DataRow = e.DataTable.Find("id = \'" & e.NewValue & "\' ")
            If dr IsNot Nothing Then
msgbox("此iD已经存在")
                StatusBar.Message1 = "此iD已经存在"
                e.Cancel = True
            End If 
        End If

        
End Select