Foxtable(狐表)用户栏目专家坐堂 → [求助]绘制单元格代码太卡,哪位大神能帮我优化一下


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

主题:[求助]绘制单元格代码太卡,哪位大神能帮我优化一下

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


加好友 发短信
等级:婴狐 帖子:42 积分:307 威望:0 精华:0 注册:2013/9/4 19:40:00
[求助]绘制单元格代码太卡,哪位大神能帮我优化一下  发帖心情 Post By:2013/9/9 16:11:00 [只看该作者]

绘制单元格太卡了,哪位大神能帮我把代码优化一下
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:彩piao项目1_1.rar

是这样的,每一期都要将本期中奖号在上一期中标红,后面的也是,33个列为单独一张表
[此贴子已经被作者于2013-9-9 16:12:37编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/9/9 16:15:00 [只看该作者]

你这个,要优化只能是分页加载.不要加载那么多出来.

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


加好友 发短信
等级:婴狐 帖子:42 积分:307 威望:0 精华:0 注册:2013/9/4 19:40:00
回复:(Bin)你这个,要优化只能是分页加载.不要加载那...  发帖心情 Post By:2013/9/9 16:21:00 [只看该作者]

代码上面不能改进了么,或者方法上,比如绘制单元格的时候,绘制好了就不再重复绘制,我发现这个绘制单元格事件是一直在运行的,你单元格显示到哪,单元格就绘制到哪,非常耗内存,我希望直接给单元格上色后就不再运行了,下次如果数据更新了,有的单元格没有绘制上颜色,可以通过点击按钮触发事件让其再次重新绘制

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/9/9 16:23:00 [只看该作者]

这个事件本来就是这样的,事件介绍里也说明了.  所以你能做的只能是分页加载.减少绘制的单元格数量.

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/9/9 16:37:00 [只看该作者]

列看起来非到Y12不可了,这样设计的意图是什么呢?12*33列,再加上期号列,就397列了,不要说快慢的事,打开软件都不可能。

能不能分成12个表?

[此贴子已经被作者于2013-9-9 16:37:45编辑过]

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


加好友 发短信
等级:婴狐 帖子:42 积分:307 威望:0 精华:0 注册:2013/9/4 19:40:00
回复:(lsy)列看起来非到Y12不可了,这样设计的意图...  发帖心情 Post By:2013/9/9 16:56:00 [只看该作者]

哈哈,不出你所料,每期33列,人家要求我循环100次,也就是3300列,我是要分表的,不是因为卡,是因为内部数据库每张表最多只能有253列,我会分成十几张表,但关键是这一张表的单元格绘制很卡,只要这一张表不卡,就可以了哦,没办法,人家要求我这么做的

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


加好友 发短信
等级:婴狐 帖子:42 积分:307 威望:0 精华:0 注册:2013/9/4 19:40:00
回复:(Bin)这个事件本来就是这样的,事件介绍里也说...  发帖心情 Post By:2013/9/9 16:57:00 [只看该作者]

分页怎么写?我后面还要多加列的

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/9/9 17:06:00 [只看该作者]

这样的话你还不如生成报表的时候再设置颜色了. 你这种情况,怎么优化效率都不会高.

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


加好友 发短信
等级:婴狐 帖子:42 积分:307 威望:0 精华:0 注册:2013/9/4 19:40:00
回复:(Bin)这样的话你还不如生成报表的时候再设置颜...  发帖心情 Post By:2013/9/9 17:13:00 [只看该作者]

好吧。看来是没辙了图片点击可在新窗口打开查看

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/9/9 21:19:00 [只看该作者]

 用下面的代码,可能会好一些,最多也只能优化到这里了。期待高手。

If e.Row.Index >= e.Table.TopVisibleRow AndAlso e.Row.Index <= e.Table.BottomVisibleRow Then
    Dim flag As Boolean = False
    If e.Row.IsNull(e.Col.Name)= False   Then
        For j As Integer = 0 To 6
            Dim s As New List (Of String)
            Dim val As String = e.Row(e.Col.Name)
            Dim nr As Row = e.Table.Rows(e.Row.Index + 1)
            
            For i As Integer = 1 To 6
                If val = nr(33*j+i) Then
                    flag = True
                    Exit For
                End If
            Next
            If e.Col.Index >(33*j) AndAlso e.Col.Index < (33*(j+1)+1) AndAlso flag Then
                e.Style = "下期中奖号码"
                flag = True
                Exit For
            Else 
                flag = False
            End If
        Next
    End If
    
    If flag = False Then
        If e.Col.Caption.Contains("未中奖号")  Then
            e.Style ="未中奖号"
        Else If e.Col.Caption.Contains("中奖号") Then
            e.Style ="中奖号"
        Else If e.Col.Caption= "期号" Then
            e.Style ="期号"
        End If
    End If
End If

 回到顶部
总数 15 1 2 下一页