2008-09-12 158 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函數只顯示一個面板和調用的返回函數,顯示下一等