afei_liuge 发表于 2023-8-18 11:11:25

Spread.net表格全选功能性能问题10W行耗时8秒

本帖最后由 afei_liuge 于 2023-8-18 15:19 编辑

在查询出来 的数据有128409行,39列, 时,使用方法
this.fpSpread.ActiveSheet.AddSelection(0, 0, 128409, 39); 做全选时 ,发现用时:8005ms 。

注意是一定要把 this.fpSpread.StatusBarVisible = true; 设置时才会出现。

Richard.Ma 发表于 2023-8-18 12:16:01

没有复现你说的问题,给sheet绑定的是一个12W行40列的datatable,全选也是瞬间的事,并没有卡住

你得考虑其他代码影响,请提供明确的重现步骤

afei_liuge 发表于 2023-8-18 12:26:13

代码贴一下了,我这边是绑定的datatable数据

afei_liuge 发表于 2023-8-18 12:27:54

你的全选是用的哪个方法,是左上角的三角形还是自己写的代码呢?

Richard.Ma 发表于 2023-8-18 14:13:06

知道你此前是绑定的datatable,所以这边也是,GetTable获取到的是40列,12万行的datatable
            btn.Click += (s,e) =>
            {
                fpSpread.ActiveSheet.ClearSelection();
                fpSpread.ActiveSheet.AddSelection(0, 0, 120000, 40);

            };
            fpSpread.Sheets.Count = 3;
            fpSpread.Features.ExcelCompatibleKeyboardShortcuts = true;
            fpSpread.ActiveSheet.DataSource = MyData.GetTable(40,120000);

afei_liuge 发表于 2023-8-18 15:19:18

Richard.Ma 发表于 2023-8-18 14:13
知道你此前是绑定的datatable,所以这边也是,GetTable获取到的是40列,12万行的datatable

你好,设置一下 this.fpSpread.StatusBarVisible = true;就会重现了。

Richard.Ma 发表于 2023-8-18 15:52:04

明白了,StatusBar里面的元素会统计合计,平均值,count等信息,所以选中区域变更会触发计算,

选中区域较大时,自然就慢了

这个没有什么好办法,建议
1.删除StatusBar中的元素,但是测试过即使全部删除也还需要4秒,可能还是会触发其他的一些代码
2.减少数据量,分页显示

afei_liuge 发表于 2023-8-18 16:56:38

Richard.Ma 发表于 2023-8-18 15:52
明白了,StatusBar里面的元素会统计合计,平均值,count等信息,所以选中区域变更会触发计算,

选中区域 ...

:'(:'(:'(:'(:'(:'(:'(:'(:'(:'(

Richard.Ma 发表于 2023-8-18 18:22:53

或者就不要用StatusBar,里面的一些功能,比如放大缩小,自己用其他的基础控件,通过代码控制

StatusBar这块没有其他的优化办法
页: [1]
查看完整版本: Spread.net表格全选功能性能问题10W行耗时8秒