找回密码
 立即注册

QQ登录

只需一步,快速开始

sam
论坛元老   /  发表于:2012-8-23 11:53  /   查看:6113  /  回复:6
Hi  Dof:


请问下,在前台给Spread表格赋值,使用SetValue方法,如何提高速度?
我现在一个表格可能会有100百多行,我通过前台Js方法来循环赋值,但是感觉速度好慢。
有什么办法可以提高其赋值的速度?
我的方法是:Spread.SetValue(row,col,value,false)
注意:我第四个参数必须为false,因我赋值后还需有关联改变。

以上有何可提高速度的办法。
谢谢!

6 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-8-23 14:41:00
沙发
你好 sam

你的这个问题是和前面修改关联数据的帖子相关的吧,Spread提供的SetValue方法本身没有提升性能的地方,我想你这块的性能主要是因为for循环次数太多,而且关联数据的修改耗费大量时间。
回复 使用道具 举报
sam
论坛元老   /  发表于:2012-8-23 14:53:00
板凳
是的。
其实我看过帮助文档了,好象使用SuspendLayout()和ResumeLayout(true)结合使用可提高一点setValue方法的性能。
你能否具体帮我解释下SuspendLayout()和ResumeLayout(true)的用意和使用方法。
谢谢!
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-8-23 15:07:00
地板
这两个方法的作用是在客户端通过代码操作Spread时,将Spread暂时挂起,不进行UI重绘:
  1.     <script type="text/javascript" language="javascript">
  2.         function ProfileSpread() {
  3.             fpSpread1.SuspendLayout();

  4.             for (var i = 0; i < 10; i++) {
  5.                 fpSpread1.SetValue();
  6.             }

  7.             fpSpread1.ResumeLayout(true);
  8.         }
  9.     </script>
复制代码
回复 使用道具 举报
sam
论坛元老   /  发表于:2012-8-23 15:22:00
5#
通過這兩個方法好象可以加快點速度。我試過了。就是不知道會不會對其他有些影響?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-8-23 16:40:00
6#
只会对SuspendLayout和ResumeLayout之间的代码生效,不会影响之外的代码。
回复 使用道具 举报
sam
论坛元老   /  发表于:2012-8-23 17:14:00
7#
哦。謝謝!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部