以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  设置了下拉列表,会触发两次,如何解决  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=90790)

--  作者:fuucc
--  发布时间:2016/9/21 17:08:00
--  设置了下拉列表,会触发两次,如何解决
    tb.SourceTable = DataTables("zzxmb1") \'指定目录树表
    tb.TreeCols = "xmname" \'指定用于生成目录树的列
    tb.SourceCols = "xmname|biaozhun|xmlx|xmsyfw|id" \'指定数据来源列
    tb.ReceiveCols = "xmname|jine|xmlx|xmsyfw|xmbh" \'指定数据接收列
    Tables("xszzbb").Cols("xmname").DropTree = tb.Build()
和datacolchanging
If e.DataCol.Name= "xmname" Then
   MessageBox.Show("ccc") 
    
    Dim nc As DataRow = DataTables("zzxmb1").find("[xmname]=\'" & e.NewValue & "\'")
    If nc IsNot Nothing Then
        e.DataRow("xmbh")=nc("id")
         e.DataRow("jine") =nc("biaozhun")
        e.DataRow("xmlx") =nc("xmlx")
        e.DataRow("jgcode")=_UserName
        e.DataRow("xueqi")= Tables("xqnf").Rows(0)("xueqi")
        e.DataRow("year")= Tables("xqnf").Rows(0)("year")
        e.DataRow("addtime")=  Date.Now
  e.DataRow.SetError("xmname","")

    Else
        \' MessageBox.Show("不存在此资助项目")
        e.DataRow.SetError("xmname","不存在此资助项目!")
        e.Cancel = True
        Return
    End If
    
End If
datecolchanged会触发两次
If e.DataCol.Name= "jine" Then
    
    If e.NewValue=0 Then
        Forms("输入金额").Open()
    Else
         Forms("输入金额").Close()
    End If
    
End If
请问如何设置可以只触发一次
[此贴子已经被作者于2016/9/21 17:08:33编辑过]

--  作者:狐狸爸爸
--  发布时间:2016/9/21 17:29:00
--  

这种问题,要别人分析的话,需要做个例子发上来才行。

 

可以先自己用messagebox.show,显示一下每次触发DataColchanged事件的时候,jine列的值分明是什么。

 

自己设计的系统,自己最清楚之间的逻辑,分析起来会比别人看着代码凭空瞎蒙,要轻松很多

 

 


--  作者:fuucc
--  发布时间:2016/9/21 17:39:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20160921173344.jpg
图片点击可在新窗口打开查看
设置了下拉列表,选择助学贷款时候金额为0,因为金额列是锁定的,想通过弹出窗口输入金额。
发现只设置下拉列表,粘贴时候又不会触发,所以又设置了DATAcolChanging设置默认值。
现在想设置金额,又不想解锁,请问有什么好办法吗?


--  作者:fuucc
--  发布时间:2016/9/21 17:49:00
--  
算了,我还是不设置锁定了,锁定了,也不好批量操作了,谢谢专家解答!
--  作者:有点蓝
--  发布时间:2016/9/21 18:08:00
--  
可以在PrepareEdit事件控制是否可以编辑,具体的话还是上例子说明吧