找回密码
 立即注册

QQ登录

只需一步,快速开始

afei_liuge
金牌服务用户   /  发表于:2023-8-18 11:11  /   查看:2906  /  回复:8
本帖最后由 afei_liuge 于 2023-8-18 15:19 编辑

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

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

8 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于: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讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-8-18 14:13:06
5#
知道你此前是绑定的datatable,所以这边也是,GetTable获取到的是40列,12万行的datatable
  1.             btn.Click += (s,e) =>
  2.             {
  3.                 fpSpread.ActiveSheet.ClearSelection();
  4.                 fpSpread.ActiveSheet.AddSelection(0, 0, 120000, 40);

  5.             };
  6.             fpSpread.Sheets.Count = 3;
  7.             fpSpread.Features.ExcelCompatibleKeyboardShortcuts = true;
  8.             fpSpread.ActiveSheet.DataSource = MyData.GetTable(40,120000);
复制代码
回复 使用道具 举报
afei_liuge
金牌服务用户   /  发表于:2023-8-18 15:19:18
6#
Richard.Ma 发表于 2023-8-18 14:13
知道你此前是绑定的datatable,所以这边也是,GetTable获取到的是40列,12万行的datatable

你好,设置一下 this.fpSpread.StatusBarVisible = true;  就会重现了。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-8-18 15:52:04
7#
明白了,StatusBar里面的元素会统计合计,平均值,count等信息,所以选中区域变更会触发计算,

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

这个没有什么好办法,建议
1.删除StatusBar中的元素,但是测试过即使全部删除也还需要4秒,可能还是会触发其他的一些代码
2.减少数据量,分页显示
回复 使用道具 举报
afei_liuge
金牌服务用户   /  发表于:2023-8-18 16:56:38
8#
Richard.Ma 发表于 2023-8-18 15:52
明白了,StatusBar里面的元素会统计合计,平均值,count等信息,所以选中区域变更会触发计算,

选中区域 ...

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-8-18 18:22:53
9#
或者就不要用StatusBar,里面的一些功能,比如放大缩小,自己用其他的基础控件,通过代码控制

StatusBar这块没有其他的优化办法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部