Foxtable(狐表)用户栏目专家坐堂 → [求助]DrawCell事件 效率求助


  共有2943人关注过本帖树形打印复制链接

主题:[求助]DrawCell事件 效率求助

帅哥哟,离线,有人找我吗?
huangfanzi
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]DrawCell事件 效率求助  发帖心情 Post By:2015/9/8 8:30:00 [显示全部帖子]

下面代码中,黄底部分加上去后,效率执行太低下了,才10条不到的需要绘制的数据,要执行2秒,老师帮我看看是不是代码用的不合理。

DrawCell事件

If e.Table.Rows.Count >0 Then    
    e.Table.DataTable.AddUserStyle("样式1", Color.Yellow,Color.Black)
    e.Table.DataTable.AddUserStyle("样式2", Color.Blue,Color.Black)
    Dim t As Table = Tables("生产计划通知单")
    If e.Row("生产计划编号") = t.Current("生产计划编号") Then
        e.style = "样式1"
    Else
      Dim ls As List(Of String) = DataTables("生产计划通知单").SQLGetValues("生产计划编号" , "[通知类型] = '" & t.Current("通知类型") & "'")
         If ls.Contains(e.Row("生产计划编号")) Then            
                e.style = "样式2"           
        End If
    End If
End If
[此贴子已经被作者于2015/9/8 8:30:23编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
huangfanzi
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2015/9/8 9:47:00 [显示全部帖子]

果然,效率不是提高一点点,看来原来没有好好掌握DrawCell事件的特性,原代码中不停的写入集合,另有一个小问题,也请教下:

假如有二行数据,结构如下:
通知类型    通知单号
A                001
A                001

当输入第二行数据的类型时,如果与上一行一致,则通知单号也用上一行的通知单号
下面是我目前的写法,但越看越别扭,是不是有更简单的写法。
DataColChanged 事件

If e.DataCol.Name = "通知类型" Then
    If e.DataRow("通知类型") = CurrentTable.Rows(CurrentTable.Current.Index - 1)("通知类型") Then
        e.DataRow("通知单号") = CurrentTable.Rows(CurrentTable.Current.Index - 1)("通知单号")
    Else
        e.DataRow("通知单号") = Nothing
    End If
End If
[此贴子已经被作者于2015/9/8 9:47:42编辑过]

 回到顶部