找回密码
 立即注册

QQ登录

只需一步,快速开始

wangzebin

注册会员

10

主题

27

帖子

81

积分

注册会员

积分
81
wangzebin
注册会员   /  发表于:2017-12-15 10:03  /   查看:3641  /  回复:9
目前表格可能出现好几百列,比如500列,6000行数据,这个时候由于一些其他原因不能使用DataSource,需要使用setdata单独设置数据

目前效率很低,请问有哪些快速的方法,或者表格有哪些属性会影响setdata的速度,比如AutoSizeRows自适应行高这个会影响,请问应该如何优化呢

9 个回复

倒序浏览
JeffryLI
葡萄城公司职员   /  发表于:2017-12-15 11:02:17
沙发
您好,您说的哪个表格控件,我们有两个表格控件,TrueDBGrid还是FlexGrid?
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
wangzebin
注册会员   /  发表于:2017-12-15 11:24:37
板凳
JeffryLI 发表于 2017-12-15 11:02
您好,您说的哪个表格控件,我们有两个表格控件,TrueDBGrid还是FlexGrid?

老师您好,是FlexGrid
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2017-12-15 14:02:30
地板
wangzebin 发表于 2017-12-15 11:24
老师您好,是FlexGrid

您好,是这样的flegrid渲染的性能是很好的, 您说的使用setData来赋值,是不是使用循环算法?
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
wangzebin
注册会员   /  发表于:2017-12-15 15:59:15
5#
JeffryLI 发表于 2017-12-15 14:02
您好,是这样的flegrid渲染的性能是很好的, 您说的使用setData来赋值,是不是使用循环算法?

c1FlexGrid1.Cols.Count = 300;

            for (int i = 0; i < c1FlexGrid1.Cols.Count; i++)
            {
                c1FlexGrid1.Cols.Name = i + "";
                c1FlexGrid1.SetData(0, i, "T" + i);
            }
            c1FlexGrid1.Rows.Count = 60000;

            c1FlexGrid1.BeginUpdate();

            for (int i = 1; i < c1FlexGrid1.Rows.Count; i++)
            {
                for (int j = 1; j < c1FlexGrid1.Cols.Count; j++)
                {
                    c1FlexGrid1.SetData(i, j, "value" + i + "->" + j);
                }
                c1FlexGrid1.SetData(i, 0, i);
            }
            c1FlexGrid1.EndUpdate();

            MessageBox.Show("a");

老师您看下这个代码,执行时间非常久
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2017-12-15 17:31:03
6#
wangzebin 发表于 2017-12-15 15:59
c1FlexGrid1.Cols.Count = 300;

            for (int i = 0; i < c1FlexGrid1.Cols.Count; i++)

您是通过手动的方式一个一个去写单元格的值,这个目前来看您的瓶颈在您的for循环上,如何去优化您的赋值算法,flexgrid本身的性能是可以承载大数据量的。希望能帮到您
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
wangzebin
注册会员   /  发表于:2017-12-15 17:56:43
7#
JeffryLI 发表于 2017-12-15 17:31
您是通过手动的方式一个一个去写单元格的值,这个目前来看您的瓶颈在您的for循环上,如何去优化您的赋值 ...

我这个例子应该如何优化能够提升赋值速度呢
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2017-12-15 18:04:17
8#
wangzebin 发表于 2017-12-15 17:56
我这个例子应该如何优化能够提升赋值速度呢

您好一种方案是采取多线程,还有一种方案是将这个数据封成DataTable再去绑定会好一点。希望能帮到您。
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
wangzebin
注册会员   /  发表于:2017-12-18 09:05:35
9#
JeffryLI 发表于 2017-12-15 18:04
您好一种方案是采取多线程,还有一种方案是将这个数据封成DataTable再去绑定会好一点。希望能帮到您。

好的,谢谢老师
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2017-12-18 10:58:58
10#

不客气,都没有怎么帮到您,谢谢支持。
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部