以文本方式查看主题 - 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 |