2008-09-12 129 views
1

我有一个页面结果页面(你在其他地方提交你的搜索查询后到达那里)为不同类型的数据对象提供一大堆gridviews。AJAX部分页面加载?

显然,某些查询比其他查询需要更长的时间。我怎样才能使每个gridview渲染,只要它有它需要的数据?

这对我来说非常棘手,因为它必须在回发和页面加载上工作。另外,对象数据源只在页面加载/回发时自动激活;我没有以编程方式调用任何方法来获取数据。我必须改变这个吗?

回答

2

@Gareth詹金斯

该页面将执行所有的查询返回,即使第一次更新面板之前,所以他不会保存任何时候有。

要做到这一点的诀窍是将您的每个复杂gridview移动到用户控件中,在用户控件中,摆脱Object DataSource垃圾并在后面的代码中进行绑定。

撰写您绑定代码,以便它只有在这种情况下结合:

if (this.isPostBack && ScriptManager.IsInAsyncPostback) 

然后,在页面,使用JavaScript programaticly刷新更新面板一旦在页面加载,你会得到每一个人gridview渲染一旦准备就绪。

0

您可以将DataGrid内部的可见性设置为false的面板内,然后从调用服务器端函数的主体onload事件调用客户端JavaScript函数,该函数将面板的可见性设置为true?

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