以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 大神看过来,帮我优化下这段代码 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=118988) |
||||
-- 作者:99473593 -- 发布时间:2018/5/15 16:20:00 -- 大神看过来,帮我优化下这段代码 \'【根据推荐人,获取完整级层路径】 If e.DataCol.Name = "B001HYZLB_TuiJianRen" Then Dim pdr As DataRow = e.DataTable.Find("B001HYZLB_YongHuID") Dim str As String = "" Do While pdr IsNot Nothing str = "/" & pdr("B001HYZLB_YongHuID") & str pdr = e.DataTable.Find("B001HYZLB_YongHuID") Loop e.DataRow("B001HYZLB_CengJiMa") = str & "/" & e.DataRow("B001HYZLB_YongHuID") & "/" End If 数据1000多条,代码写在DataColChanged中,需要根据推荐关系,获得每个会员的绝对层级路径,重置B001HYZLB_TuiJianRen列时就卡死了,请给优化下,怎么才能提高速度
[此贴子已经被作者于2018/5/15 16:22:40编辑过]
|
||||
-- 作者:99473593 -- 发布时间:2018/5/15 16:21:00 -- \'【根据推荐人,获取完整级层编码】 If e.DataCol.Name = "B001HYZLB_TuiJianRen" Then Dim pdr As DataRow = e.DataTable.Find("B001HYZLB_YongHuID") Dim str As String = "" Do While pdr IsNot Nothing str = "/" & pdr("B001HYZLB_YongHuID") & str pdr = e.DataTable.Find("B001HYZLB_YongHuID") Loop e.DataRow("B001HYZLB_CengJiMa") = str & "/" & e.DataRow("B001HYZLB_YongHuID") & "/" End If
[此贴子已经被作者于2018/5/15 16:23:10编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2018/5/15 16:46:00 -- 加入一个辅助列【是否处理完成】。
加入,你重置一个四级的人,那么上级(三级、二级、一级),也是应该得到值的了吧?不需要重复find查找一次。
重置列之前,全部行设置成false,处理完成的行设置成true,当遇到【处理完成=true】的时候,不要再往上查找,直接使用其路径。
|
||||
-- 作者:有点甜 -- 发布时间:2018/5/15 16:49:00 -- 优化
[此贴子已经被作者于2018/5/15 17:04:49编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2018/5/15 16:50:00 -- 具体细节自己调试,如果还是无法处理。请上传具体实例测试。 |
||||
-- 作者:99473593 -- 发布时间:2018/5/15 16:57:00 -- 谢谢我再看看 |
||||
-- 作者:99473593 -- 发布时间:2018/5/15 17:23:00 -- 以下是引用有点甜在2018/5/15 16:46:00的发言:
加入一个辅助列【是否处理完成】。
加入,你重置一个四级的人,那么上级(三级、二级、一级),也是应该得到值的了吧?不需要重复find查找一次。
重置列之前,全部行设置成false,处理完成的行设置成true,当遇到【处理完成=true】的时候,不要再往上查找,直接使用其路径。
好像还是不行,麻烦看下例子 .NET Framework 版本:2.0.50727.8830 Foxtable 版本:2017.3.3.1 错误所在事件:表,B001HYZLB, DataColChanged 详细错误信息: 调用的目标发生了异常。 筛选表达式“B001HYZLB_YongHuID”的计算结果不是布尔值项。
[此贴子已经被作者于2018/5/15 17:26:26编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2018/5/15 18:51:00 -- 参考代码
If e.DataCol.Name = "B001HYZLB_TuiJianRen" AndAlso e.DataRow("已经完成") = False Then |