2011-06-15 55 views
1

我试图一次加载页面的某些部分,而不是在onLoad页面事件中进行所有计算,然后一次显示所有计算结果。有没有办法触发一个没有点击事件的updatepanel?

我认为模拟更快加载页面的方法之一是将页面的各个部分分隔成更新面板(如果我在这种方法中错了,请纠正我)。因此,我想知道是否有办法在onLoad事件中执行一些代码,在页面上显示该代码,然后继续在updatepanel中执行一些其他工作并在完成时加载这些代码。

回答

2

UpdatePanels是ajax的糟糕实现。由于只有页面的一部分正在更新,因此认为您减少了页面的执行时间很容易(太简单)。 UpdatePanel执行回发,并执行页面的整个生命周期(蹩脚地说,它会为您的页面执行PageLoad,并且您的页面上的每个用户控件不仅仅是UpdatePanel中的那些控件)。除非您在代码中放置了大量的if !Page.IsPostBack,否则实际上最终会放慢应用程序的运行速度。此外,由于它是回发,因此它会提交页面上的runat ='server'表单,并将每个输入(不仅仅是更新面板中的内容)提交给服务器,这意味着您不保存任何内容有效载荷和带宽通过使用更新面板。

回答你的问题,但你只需要调用__doPostBack('updatepanel1','')。参考http://encosia.com/easily-refresh-an-updatepanel-using-javascript/

+0

@AI hm am confused?我认为updatepanel只应该为updatepanel内的控件执行代码? – locoboy 2011-06-15 21:28:25

+0

@ cfarm54这是UpdatePanels常见的误解。暴露很容易。只需在PageLoad方法中添加一个断点,并在UpdatePanel刷新时观察它。 – 2011-06-15 21:37:25

+0

@AI有另外一种方法可以解决这个问题吗?我宁愿不要拖慢应用程序的运行速度。我知道updatepanels不会加快速度,它只是让事情看起来更快,因为它一次加载页面的一部分。 – locoboy 2011-06-15 21:41:26

2

您可以调用UpdatePanel上的.Update方法。将UpdateMode设置为Conditional,并在代码中手动处理所有更新面板更新。

相关问题