asp.net关于Page_Load方法和执行js脚本顺序的不同所带来的问题
最近做一个项目需要导出报表的功能,目的是将页面上GridView展示出来的数据导出到excel中。因为GridView有分页嘛,所以导出来的数据只是页面上显示的数据,不是那么全,于是就想到了再做一个页面,将全部数据通过新页面的GridView展示出来,然后导出到excel中,导入完毕再将页面关闭。想是这样想的,可是做的时候却遇到了一个问题。就是在Page_Load方法中根本获取不到前台的GridView。在Page_Load方法中和js脚本的onload方法中同时打上断点可以发现,程序会先执行Page_Load,之后才会执行onload方法。也就是说,当执行Page_Load方法的时候页面上还没有加载html控件,所以用js方法根本不可能获取到html控件。也就是说,在Page_Load中用js来控制html控件是不合适的。
下面举一个实际应用中遇到的一个问题。
在父页面A中点击某个按钮要弹出一个模态窗体B,而且需要向模态窗体中传一些数据(window.showModalDialog(参数1,参数2,参数3),参数2为一个数组,是需要向B页面中传递的数据,如果通过参数1以get的方式传递数据(a.aspx?参数1=数据1&参数2=数据2),这样遇见大数据量要报错),如果需要在Page_Load中用到参数2的数据的时候就会出现获取不到参数的窘境。因为参数2的数据只有在js中获取,而Page_Load方法中获取不到前台页面的东西。