for(var i=0;i<dsA5JbqkRowCount;i++)
      {
        result=GetObj.ReportJbqkRow(i,countycode).value; 
        document.getElementById("<%=lblInfoMsg.ClientID %>").innerHTML="表1已完成:"+(i+1)+"/"+dsA5JbqkRowCount;
        if(result!="OK")
        {
            document.getElementById("<%=lblShowReportMessage.ClientID %>").innerHTML+="<br />"+ result;
        } 
        //怎么即时显示  尤其是ReportJbqkRow方法需要很长时间的时候怎么让前台控件即时更新innerHTML???现在的效果是界面卡10秒不动 然后一口气显示出来
      }
//怎么即时显示  尤其是ReportJbqkRow方法需要很长时间的时候怎么让前台控件即时更新innerHTML???现在的效果是界面卡10秒不动 然后一口气显示最终界面document.getElementById("<%=lblShowReportMessage.ClientID %>").??这里有没有让界面即时显示的方法可调???

解决方案 »

  1.   

    把你的js移到页面尾部,以防止阻断页面的加载
    var elResult = document.getElementById("<%=lblInfoMsg.ClientID %>");
    //友好显示
    elResult.innerHTML = '正在加载中...';
    result=GetObj.ReportJbqkRow(i,countycode).value; 
    elResult = innerHTML="表1已完成:"+(i+1)+"/"+dsA5JbqkRowCount;
      

  2.   

    用ajax异步加载吧
    http://www.cnblogs.com/qleelulu/archive/2008/04/21/1163021.html
      

  3.   

    把for循环拆开来,一次一次加载就好了,把你的i设置一个全局变量,每加载一次就自加,然后取下一次内容
    注释掉你的for然后放进一个函数func,就是LS说的setTimeout(func, 1000)
      

  4.   

    var i=0;
    function func()
    {
            result=GetObj.ReportJbqkRow(i,countycode).value; 
            document.getElementById("<%=lblInfoMsg.ClientID %>").innerHTML="表1已完成:"+(i+1)+"/"+dsA5JbqkRowCount;
            if(result!="OK")
            {
                document.getElementById("<%=lblShowReportMessage.ClientID %>").innerHTML+="<br />"+ result;
            }
            i++;
            var timer = setTimeout(func, 1000);
            if(idsA5JbqkRowCount <= i) 
                 clearTimeout(timer);
    }
      

  5.   

    数据取自服务端,
    提交服务端一次执行,回发到客户端,
    不可能存在楼主这样的和服务端的n次交互!
    如果要这样的效果异步的Ajax是可以的!
    举个例子:服务端有一个for循环(相当于数据取自服务端),
    js想显示依次显示循环值,事实上只能显示循环最后一个值+1,
    c#:
        public int i=0;
        for (i = 0; i < 10; i++)
        {
                Page.ClientScript.RegisterStartupScript(Page.GetType(),"","fn()",true);
        }
    js:
            function fn() {
                setTimeout("fn", 3000);
                alert("<%=i %>");
            }
      

  6.   

    同意楼上的这些,用setTimeout设置一个很小的值进行加载,总时间可能会多,但效果好如果setTimeout的设置到最小也比显示一条的时间大很多,那么可能在setTimeout中加载N条。这个得自己试了,不同的电脑速度也不一样
      

  7.   

    搞一个onLoad的异步加载了
    每次页面加载的时候都让数据加载一次
    这样减轻服务器压力
      

  8.   

    setTimeout搞定了,帖子晾一会儿就结贴这次又是林妹妹的头功喽