AJAX部分页面加载?
时间:2020-03-05 18:52:25 来源:igfitidea点击:
我有一个页面结果页面(在其他地方提交搜索查询后,我们会到达那里),其中有很多用于不同类型数据对象的gridview。
显然,某些查询要比其他查询花费更长的时间。拥有所需数据后,如何立即使每个Gridview呈现?
这对我来说很棘手,因为它必须在回发和页面加载上都起作用。同样,对象数据源只是在页面加载/回发时自动触发;我没有以编程方式调用任何方法来获取数据。我需要改变这个吗?
解决方案
回答
我们能否将DataGrids放置在其可见性设置为false的面板内部,然后从正文的onload事件中调用客户端javascript函数,该事件调用将面板的可见性设置为true的服务器端函数?
如果将其与asp:updateProgress控件组合在一起并将整个内容包装在UpdatePanel中,则应该得到的内容与所需内容接近,特别是如果我们操纵了onload中调用的js函数以仅显示一个面板并调用return显示下一个等的功能
回答
@加里斯·詹金斯(Gareth Jenkins)
该页面将在返回第一个更新面板之前执行所有查询,因此他将不会在那里保存任何时间。
这样做的技巧是将每个复杂的gridviews移到用户控件中,在该用户控件中,摆脱Object DataSource废话,并在后面的代码中进行绑定。
编写绑定代码,以便仅在这种情况下绑定:
if (this.isPostBack && ScriptManager.IsInAsyncPostback)
然后,在页面中,一旦页面加载完成,就使用javascript以编程方式刷新更新面板,一旦准备好,我们将获得每个单独的gridview呈现。