以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  drawcell的问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=130082)

--  作者:rjh4078
--  发布时间:2019/1/12 16:26:00
--  drawcell的问题
如果某个表有了drawcell代码 就无法再执行全局drawcell吗?


--  作者:rjh4078
--  发布时间:2019/1/12 16:35:00
--  
现在发现有几个表的drawcell事件不执行

我已经在currenttablechanged事件中加入了
CurrentTable.DataTable.GlobalHandler.DrawCell=True
在全局表事件中设置了如下代码
 Dim dr As DataRow=DataTables("表格标记").find("表名=\'" & e.Table.name & "\' and 用户=\'" & _userid & "\' and id=\'" & e.Row("_identify") & "\'")
    If dr IsNot Nothing Then
        Dim s As String
        s=Rand.NextString(5)
        e.Table.DataTable.AddUserStyle(s,Color.FromARGB(dr("颜色")),Color.black)
        e.Style=s
    End If


--  作者:rjh4078
--  发布时间:2019/1/12 16:41:00
--  
另外发现这种标记表格的方式非常耗资源 CPU基本都在15以上 开了20个表
--  作者:rjh4078
--  发布时间:2019/1/12 16:52:00
--  
把个表的drawcell事件删除 全局的drawcell才生效
现在的问题是有没有办法优化下效率,感觉非常卡顿

--  作者:有点蓝
--  发布时间:2019/1/12 17:17:00
--  
以下是引用rjh4078在2019/1/12 16:26:00的发言:
如果某个表有了drawcell代码 就无法再执行全局drawcell吗?

是的
--  作者:有点蓝
--  发布时间:2019/1/12 17:17:00
--  
具体代码或者上传实例说明
--  作者:rjh4078
--  发布时间:2019/1/12 19:35:00
--  
drawcell的代码

 Dim dr As DataRow=DataTables("表格标记").find("表名=\'" & e.Table.name & "\' and 用户=\'" & _userid & "\' and id=\'" & e.Row("_identify") & "\'")
    If dr IsNot Nothing Then
        Dim s As String
        s=Rand.NextString(5)
        e.Table.DataTable.AddUserStyle(s,Color.FromARGB(dr("颜色")),Color.black)
        e.Style=s
    End If
我做了一张表用来保存用户标记的行的id和颜色 然后绘制

--  作者:rjh4078
--  发布时间:2019/1/12 19:53:00
--  
效果能达到 但是就是整个项目都卡住了 点一下 卡几秒
--  作者:有点甜
--  发布时间:2019/1/13 22:18:00
--  

不要再drawcell事件写耗时代码,特别是find的代码。

 

与其一直find,不如加入一个辅助列,把信息引用过来。然后再在drawcell里面直接判断本表数据。


--  作者:rjh4078
--  发布时间:2019/1/14 15:13:00
--  
主要表太多 如果每个表都加辅助列有点麻烦