阻止UpdatePanel加载服务器上的整个页面

时间:2012-05-28 01:16:02

标签: asp.net performance webforms updatepanel asp.net-3.5

据我了解,当UpdatePanel更新时,整个页面将被重建,但只有UpdatePanel内的内容才会在页面上重新加载。

我的页面的某些部分渲染速度很慢(由于数据库调用)而且我不希望所有这些部分都重新加载每个回发,如果它只需要重新加载一小部分页。

示例 - 在页面顶部(UpdatePanel外部)我显示一组总计,在UpdatePanel内部我有一个带有“下一页”按钮的网格。当我点击“下一步”时,我希望网格更新,但我不希望服务器再次查询数据库中的所有总数。

最好的方法是什么?

3 个答案:

答案 0 :(得分:1)

您可以检查回发是否来自updatepanel。如果是这样,那么你就是不计算总数。

如果您有多个更新面板,那么您可以通过检查以下内容来检查更新面板的回发内容:

bool isUpdatePanelPostBack 
        = ScriptManager.GetCurrent(Page).AsyncPostBackSourceElementID
          .Equals(yourUpdatePanel.UniqueID);

if(!isUpdatePanelPostBack) {
    //calculate your totals 
}

如果您的页面上只有一个更新面板,那么您只需检查IsInAsyncPostback以设置bool:

bool isUpdatePanelPostback = ScriptManager.GetCurrent(Page).IsInAsyncPostBack;

答案 1 :(得分:0)

您始终可以检查页面的IsAsync属性,以排除运行代码块。

答案 2 :(得分:0)

标准方法是在运行总计逻辑之前进行!PostBack检查。这样它们只是在第一次加载页面时计算出来,然后它们被保存在你用来显示它们的控件的ViewState中。

或者,如果您使用数据绑定(使用ObjectDataSource),那么这将自动为您处理,因为数据绑定只会在页面第一次加载时发生。