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


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

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

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/8 9:12:00 [显示全部帖子]

肯定不合理,drawcell是重复不断的执行的。不要重复用SqlGetValues

 

你可以用一个变量记录ls,在需要重新获取的地方执行sqlGetValues(比如CurrentChanged事件),然后在drawcell直接判断

 

public ls as List(Of String)

 

------------------

 

ls = DataTables("生产计划通知单").SQLGetValues("生产计划编号" , "[通知类型] = '" & t.Current("通知类型") & "'")

 

---------------------------

 

If ls.Contains(e.Row("生产计划编号")) Then
    e.style = "样式2"
End If


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/8 10:42:00 [显示全部帖子]

DataColChanged事件处理行位置的代码肯定别扭。

 

 

If e.DataCol.Name = "通知类型" Then
    Dim t As Table = Tables(e.DataTable.Name)
    Dim idx As Integer = t.FindRow(e.DataRow)
    If idx > 0 AndAlso e.DataRow("通知类型") = t.rows(idx-1)("通知类型") Then
        e.DataRow("通知单号") = t.rows(idx-1)("通知单号")
    Else
        e.DataRow("通知单号") = Nothing
    End If
End If


 回到顶部