如题 后台执行的代码如下Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "", "<script defer>show();</script>");我前台有个datagrid控件,后台调用的那个 show()本来是应该等datagrid的数据全部加载完了在根据里面模板列中的控件ID做某些动作的,但是由于前台datagrid绑定的数据比较多导致加载没结束就执行show()方法了,导致里面的 获取 ID为空对象 这该怎么解决?总结就是一点,如果让前台全部加载完毕才执行JS?不能用onload

解决方案 »

  1.   

    http://www.cnblogs.com/bokeren/archive/2008/01/30/1058844.html
    page 生命周期  
      

  2.   

    看不太懂
    要不你就只绑定第一页,很快的吧。
    为啥不能全部在后台写方法或者所有操作都调用webservice,按顺序来调用。这样应该就没问题了吧?
      

  3.   

    把你这句代码放到datagrid的PreRender事件中去!!
      

  4.   

    总结一句话就是在整个页面文当完全加载后才运行后台出注册的JS代码,我在网上找了说是 加上 defer=true 可以实现这个功能,但是事实上我测试多次并没成功
      

  5.   

    先注册这个脚本文件,然后在</body>代码之前输出一段调用方法的js代码就可以了。
      

  6.   

    html控件有个属性叫readyState,这个属性我们在xmlHttp请求的时候常用到。uninitialized      Object is not initialized with data. 
    loading            Object is loading its data. 
    loaded             Object has finished loading its data. 
    interactive        User can interact with the object even though it is not fully loaded. 
    complete           Object is completely initialized.你试试以下代码(未测试过)
    <html>
    </html>
    <script>
    var intervalID = window.setInterval(                                   function(){
                                         var grid = document.getElementByID('myGrid');
                                         if(grid.readyState == "complete"){//或者document.readyState == "complete"
                                             show();//你要执行的函数
                                             window.clearInterval(intervalID);//取消检查
                                         }
                                       }                                   ,
                     5)//5ms检查一次</script>