以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  e.datacolchanged事件和e.datacolchanging事件的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=157951)

--  作者:ycwk
--  发布时间:2020/11/3 14:18:00
--  e.datacolchanged事件和e.datacolchanging事件的问题
下面这段代码,在修改指标名称字段后,弹出提示, 用户点是,则允许修改字字段值并且修改关联表, 点否则不允许修改字段值也不修改关联表,但是现在写在datacolchanging事件中,点是,始终不能为新值, 不知道要怎么弄了

If e.DataCol.Name = "指标名称" Then \'如果更改的是身份证号码列
      
     Dim Result As DialogResult
     Result = MessageBox.Show("与此指标关联的对象都会受到影响,是否继续?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
     If Result = DialogResult.Yes Then       \'如果点的是
\'msgbox("Y")
          Dim dr As DataRow = DataTables("医疗业务报表指标关联表").SQLFind("指标名称 = \'" & e.OldValue & "\'" )
          If dr IsNot Nothing Then         \'如果有符合条件的记录
            dr("指标名称")=e.NewValue       \'同意变动, 则关联表赋新值
            dr.Save
            e.DataRow("指标名称")=e.NewValue
            e.DataRow.Save         \'保存主表指标名称字段为修改后的值,避免在界面上不点保存,点刷新时, 关联表已被修改了,而主表字段被还原   ;  这句没用
          End If
     Else          \'如果点的否
\'msgbox("N")
          \'dr("指标名称")=e.OldValue           \'不同意变动还原成旧值,这里用e.cancel=true没用,变都变了
          e.Cancel=True  
     End If


End If

--  作者:有点蓝
--  发布时间:2020/11/3 14:21:00
--  
代码没有问题,关联表直接改的数据库,界面要显示新值需要重新加载数据才行