找回密码
 立即注册

QQ登录

只需一步,快速开始

fanhy

论坛元老

9

主题

36

帖子

8017

积分

论坛元老

积分
8017

活字格认证

fanhy
论坛元老   /  发表于:2014-9-16 10:55  /   查看:6734  /  回复:5
你好!

     我这边用之前你们提供的,区域绑定方式解决公式问题。发现有几个问题:

   1. 数据超过3万条,12列,就卡死了,需要解决一下
   2. 多sheet页绑定用区域绑定方式是否只改变SheetName和DataSource就可以了

   
                FarPoint.Win.Spread.Data.SpreadDataBindingAdapter Sdba = new                                 FarPoint.Win.Spread.Data.SpreadDataBindingAdapter();
                Sdba.DataSource = dt;
                Sdba.Spread = fpSpread1;
                Sdba.SheetName = fpSpread1.Sheets[0].SheetName;
                Sdba.AutoGenerateRow = true;
                Sdba.DataAutoCellTypes = false;
                Sdba.MapperInfo = new FarPoint.Win.Spread.Data.MapperInfo(1, 0, iF1AtMaxRow, iF1AtMaxCol);
                Sdba.FillSpreadDataByDataSource();
                Sdba.Dispose();

上述两个问题比较紧急请尽快回复!

5 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2014-9-16 15:31:00
沙发
回复 1楼fanhy的帖子

问题一,抱歉,当前区域绑定方式速度没有很有效的提升办法,如一定要使用区域绑定,可以考虑降低数据量或者是分批加载的方式。3W条数据即使一次性展现在 Spread 中,既耗费性能,用户的可读性也不高。
问题二,是的
回复 使用道具 举报
fanhy
论坛元老   /  发表于:2014-9-16 16:50:00
板凳
回复 2楼iceman的帖子

想问下分批加载如何加载?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-9-16 17:35:00
地板
回复 3楼fanhy的帖子

大体思路是每次加载固定行,例如 1000,通过 topchange 事件判断用户是否浏览到最后一行数据,如果是进行下1000行数据的加载:

  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             this.fpSpread1.TopChange += fpSpread1_TopChange;
  4.         }

  5.         void fpSpread1_TopChange(object sender, FarPoint.Win.Spread.TopChangeEventArgs e)
  6.         {
  7.             if (e.NewTop==900)
  8.             {
  9.                 //添加空行到 Spread
  10.                 this.fpSpread1.ActiveSheet.Rows.Add(1000, 1000);

  11.                 //从数据库中取数据,另1000行,绑定到这些空行
  12.                 BindSpread();
  13.             }
  14.         }
复制代码


谢谢
回复 使用道具 举报
fanhy
论坛元老   /  发表于:2014-9-16 18:14:00
5#
回复 4楼iceman的帖子

恩这种方式是客户端的操作可以,但是,我这边的应用场景是生成excel,一次性数据全部填充。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-9-17 09:29:00
6#
回复 5楼fanhy的帖子

抱歉,如果是这种场景还是建议您进行分批加载,首先加载1000条让用户可以查看,在通过 Timer或者其他定时器触发事件分批加载其他数据。在全部加载完成后提示用户数据已经全部加载成功。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部