找回密码
 立即注册

QQ登录

只需一步,快速开始

ifastudy

注册会员

4

主题

14

帖子

42

积分

注册会员

积分
42
最新发帖
ifastudy
注册会员   /  发表于:2017-11-5 17:14  /   查看:4689  /  回复:5
从后台获得数据后,要填充一系列的格子,还要计算值。这些动作都在suspendPaint()和resumePaint()之间。
现在想在这些运作的过程中画出进度条的状态,问题是一旦进入suspendPaint后进度条不再更新,除非到resumePaint结束。
是否有方法在之间更进时度条状?
伪代码如下:
        spread.suspendPaint();
        spread.suspendEvent();
        spread.suspendCalcService(true);
        setProgress(10);//更新进度条
       
        fillArear(1);//填充某个区域的值                           
       setProgress(30);
        fillArear(2);                           
        setProgress(50);
        fillArear(3);                           
        setProgress(70);       
       
        spread.resumeCalcService(true);
        spread.resumeEvent();
        spread.resumePaint();
        sht.clearPendingChanges();       
        setProgress(100);

5 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-11-6 11:13:14
沙发
如果可以,您可以将进度条划到spread对象之外,比如写一个弹出层,浮到spread上面,在弹出层上画,等到进度条走到100%后自动关闭弹出层。这样不需要基于spread的机制。
回复 使用道具 举报
ifastudy
注册会员   /  发表于:2017-11-6 11:37:41
板凳
事实上,我们也是这样设计的。
我发现在处理spreadjs时,界面是不响应其它非spreadjs窗口操作的。
上面显示进度条的代码如下:
        function setProgress(value){
                value = value || 10;
               
                if(!$$('popup_progressbar'))
                {
                        webix.ui({
                            view:"popup",
                            id:"popup_progressbar",
                            width:600,
                            height:50,
                            position:"center",
                            body:{
                                        template: "<div id='progressbar' style='margin-left:-10px;margin-top:-10px;width:110%;height:300%;'></div>",width:600
                                }
                        }).show();
                       
                }
                else
                {
                        $("#progressbar").progressbar({value: value});
                       
                        if(value==100)
                        setTimeout(function(){
                                if($$('popup_progressbar'))
                                $$('popup_progressbar').destructor();
                        },1000);
                }
               
        }
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-11-6 18:04:30
地板
对,spread.suspendPaint();和spread.resumePaint();设计的初衷是这样的,本来SpreadJS本身有着自动重绘的机制,很多代码执行完后都会触发重绘,但是在实际应用上往往不需要这么多的重绘,这样多次的重绘会影响性能,那么于是就有了暂停重绘,之后一并重绘的机制。这样只需要重绘一次,比之前走一步重绘一次性能上会有大幅度提高。
回复 使用道具 举报
gxjt-小张
初级会员   /  发表于:2018-1-10 14:52:28
5#
ifastudy 发表于 2017-11-6 11:37
事实上,我们也是这样设计的。
我发现在处理spreadjs时,界面是不响应其它非spreadjs窗口操作的。
上面显 ...

你好,可以给一份完整的关于活字格做进度条的代码么?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-1-10 16:51:47
7#
gxjt-小张 发表于 2018-1-10 14:52
你好,可以给一份完整的关于活字格做进度条的代码么?

您好,这里是spreadjs专区,活字格的问题请在活字格专区发帖询问。
http://gcdn.gcpowertools.com.cn/forum.php?mod=forumdisplay&fid=195
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部