AJAX部分页面加载?

时间:2008-09-12 17:57:52

标签: asp.net ajax

我有一个页面结果页面(你在其他地方提交搜索查询后到达那里),为不同类型的数据对象提供了大量的网格视图。

显然,有些查询需要的时间比其他查询要长。如何在每个gridview获得所需数据后立即渲染它们?

这对我来说很棘手,因为它必须适用于回发和页面加载。此外,对象数据源只会在页面加载/回发时自动触发;我没有以编程方式调用任何方法来获取数据。我需要改变吗?

2 个答案:

答案 0 :(得分:2)

@Gareth Jenkins

页面将在返回第一个更新面板之前执行所有查询,因此他不会在那里保存任何时间。

这样做的诀窍是将每个复杂的网格视图移动到用户控件中,在用户控件中,摆脱Object DataSource垃圾,并在后面的代码中进行绑定。

编写绑定代码,使其仅在这种情况下绑定:

if (this.isPostBack && ScriptManager.IsInAsyncPostback)

然后,在页面中,一旦页面加载,使用javascript以编程方式刷新更新面板,并且一旦准备好,您将获得每个单独的gridview渲染。

答案 1 :(得分:0)

您是否可以将DataGrids置于其可见性设置为false的面板中,然后从正文的onload事件调用客户端javascript函数,该事件调用服务器端函数将面板的可见性设置为true?

如果你将它与asp:updateProgress控件结合在一起并将整个事件包装在UpdatePanel中,你应该得到一些接近你正在寻找的东西 - 特别是如果你操纵onload中调用的js函数只显示一个面板并调用显示下一个等的返回函数。