找回密码
 立即注册

QQ登录

只需一步,快速开始

76856123

中级会员

9

主题

31

帖子

988

积分

中级会员

积分
988

活字格认证

76856123
中级会员   /  发表于:2011-5-26 21:32  /   查看:6684  /  回复:3
fpspread绑定数据后第一次打开窗口的速度很慢,关闭后再打开就很快了,数据量很小,只有一行十二列,不知道是什么原因

3 个回复

倒序浏览
gw0506
超级版主   /  发表于:2011-5-27 09:35:00
沙发
第一次代开窗口,有以下几件事会影响速度
1. 如果使用VS想到绑定数据库,VS会自动生成Adapter。Adapter要先从数据库取得数据,然后填充到自己的DataSet。之后在绑定到Spread并且填充。
2. 首次打开窗口,Spread也会初始化

另外,数据库连接的网络质量也是影响速度的因素。

因此我建议你从以上3个方面排查确认一下影响速度的原因,然后我们一起讨论优化方案。
回复 使用道具 举报
76856123
中级会员   /  发表于:2011-5-27 10:32:00
板凳

  1.     Private Sub search_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2.         Form1.sqlcont.Open()
  3.         Dim sqlstr As String = "select mf_pic,mf_prd_no,mf_dd,mf_cus,mf_rem,usd,mf_ll,l,w,h,pic,mf_amt1,mf_amt2,mf_amt3,mf_amt4,mf_amt_net1,mf_amt_net2,mf_amt_net3,mf_amt_net4 from mf"
  4.         Dim dataapt As New OleDb.OleDbDataAdapter(sqlstr, Form1.sqlcont)
  5.         Dim dataset As New DataSet
  6.         dataapt.Fill(dataset, "mf")
  7.         Grid1.DataSource = dataset
  8.         Grid1.DataMember = "mf"
  9.         dataset.Dispose()
  10.         dataapt.Dispose()
  11.         Form1.sqlcont.Close()
  12.     End Sub
复制代码

这个表中只有一行数据,换用datagridview不存在这个问题,所以应该是spread初始化时影响了打开速度
因为第二次打开时就很快
回复 使用道具 举报
gw0506
超级版主   /  发表于:2011-5-27 11:03:00
地板
如果是这样,那么优化的效果应该不太明显。
1. 限制Spread的行列数。在设置DataSource之前,取到数据库的行列数,然后设置Spread的行列数。
2. 可不可以将这段逻辑放在其他地方运行,同时将Spread的Visiable置为false。等到打开这个Form是,只需要将Visiable置为true。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部