以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]DataColChanged事件中的代码改到AfterEdit事件中?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=6196)

--  作者:pyh6918
--  发布时间:2010/3/16 14:53:00
--  [求助]DataColChanged事件中的代码改到AfterEdit事件中?
If e.DataCol.Name = "检查编号" Then
    Dim dt As DataTable = DataTables("序号")
    Dim r As DataRow
    r = dt.Find("[检查编号] = \'" & e.datarow("检查编号") & "\'")
    If r IsNot Nothing
        e.datarow("单位") = r("单位")
        e.datarow("检查时间") = r("检查时间")
        e.datarow("日序") = e.datarow("检查编号") & e.DataRow("_Identify")
    end if
end if
这段代码是表事件DataColChanged中的,执行正常,由于在导入数据时也触发DataColChanged事件,由于“日序”列是根据“编号”和("_Identify")生成的,导入时该列内容会变。我想把这段代码改到AfterEdit事件中:改成这样确不执行:
If e.col.DataCol.Name = "检查编号" Then
    Dim dt As DataTable = DataTables("序号")
    Dim r As DataRow
    r = dt.Find("[检查编号] = \'" & e.row.datarow("检查编号") & "\'")
    If r IsNot Nothing
        e.row.datarow("单位") = r("单位")
        e.row.datarow("委派会计") = r("委派会计")
        e.row.datarow("检查时间") = r("检查时间")
        e.row.datarow("单位") = r("单位")
        e.row.datarow("使用单位") = r("使用单位")
        e.row.datarow("日序") = e.row.datarow("检查编号") & e.row.DataRow("_Identify")
    end if
end if
请问应该怎么改?
或者有什么办法在导入数据时屏蔽DataColChanged事件也可以。谢谢大家!

--  作者:狐狸爸爸
--  发布时间:2010/3/16 15:07:00
--  
比较一下两者的E参数属性,所有的e.Row应该改为e.datarow

另外这个事件不一定对导入有效。
--  作者:pyh6918
--  发布时间:2010/3/16 15:24:00
--  
If e.col.DataCol.Name = "检查编号" Then
改成:
If e.DataCol.Name = "检查编号" Then 在编辑器中提示错误:

图片点击可在新窗口打开查看此主题相关图片如下:q1.bmp
图片点击可在新窗口打开查看

 r = dt.Find("[检查编号] = \'" & e.row.datarow("检查编号") & "\'")
改成:
 r = dt.Find("[检查编号] = \'" & e.datarow("检查编号") & "\'") 在编辑器中提示错误:

图片点击可在新窗口打开查看此主题相关图片如下:q2.bmp
图片点击可在新窗口打开查看

--  作者:狐狸爸爸
--  发布时间:2010/3/16 15:35:00
--  

第一个图:同样e.DataCol也应该改为e.Col
第二个图:这样有一个e.DataRow没有改为e.Row

其实你一打开代码编辑器,该事件的e参数就已经列出来了的。


--  作者:pyh6918
--  发布时间:2010/3/16 15:51:00
--  
老大改成这样了,编辑器通过了,可是就是不执行啊!!硬着头皮再问!!

If e.col.Name = "检查编号" Then
    Dim dt As dataTable = dataTables("序号")
    Dim r As dataRow
    r = dt.Find("[检查编号] = \'" & e.row("检查编号") & "\'")
    If r IsNot Nothing
        e.row("单位") = r("单位")
        e.row("委派会计") = r("委派会计")
        e.row("检查时间") = r("检查时间")
        e.row("使用单位") = r("使用单位")
        e.row("日序") = e.row("检查编号") & e.row("_Identify")
    end if
end if

--  作者:狐狸爸爸
--  发布时间:2010/3/16 15:58:00
--  

没有看出什么问题,你做个简单的例子文件传上来,并写上你的代码。

 

 


--  作者:狐狸爸爸
--  发布时间:2010/3/16 15:59:00
--  
关闭屏蔽事件,可以在DatacolChanged加一个判断,某全局变量等于True时才执行,这样可以在导入是将此变量设为False,导入结束后将此变量设置为True,达到间接屏蔽事件的目的
--  作者:pyh6918
--  发布时间:2010/3/16 16:02:00
--  
多谢,就用这招了,老大就是老大。哈哈