2011-02-09 86 views
4

我正在使用ASP.NET和SQL Server。我想異步加載數據庫中的數據並顯示立即部分加載的數據。如何異步加載和顯示數據

假設有萬噸的記錄,在查詢結果。 3秒後,它加載20%,然後我必須立即處理並顯示20%的數據,而不是等待完整的響應。我知道jQuery中的.jjax加載數據異步。是否可以處理部分響應,不等待完整響應並立即顯示。

有什麼辦法得到這個?

回答

2

假設有噸的記錄在查詢結果

你必須自己AKS:將最終用戶看到噸的紀錄一次?


不指定什麼,你是如何顯示的數據,所以我會假設你正在顯示類似網格的數據。

我們今天在這種通信場景中做的事情是使用頁面加載數據並在用戶向下滾動網格時觸發數據,甚至可以在移動設備甚至Facebook,Twitter等中看到這一點。

它會加載第一頁(例如我們設置的頁面爲20條記錄),所以它會加載前20條記錄,但很快到達底部,它會自動加載20多個記錄(第1頁)。

這種技術被稱爲Infinite Scroll

+0

+1尼斯提示!其實我必須像webservice響應中的東西一樣實現Facebook ...但響應速度太慢。這就是爲什麼問。 – Brij 2011-09-21 11:39:01

0

可能solicion:

  1. 您創建一個文件ASHX(通用處理器),或者適合你。該文件將通過GET或POST進行諮詢。
  2. 相信2店的程序 a。返回記錄數 b。有完整的結果
  3. Ajax使呼叫sp「a」。你會收到記錄的數量。
  4. 的Ajax查詢SP「b」和你保存在高速緩存或會話查詢的一部分,並回答你想要的記錄數。
  5. 理想情況下,諮詢的結果是json格式,可以更小,但花費更長的時間來加載JavaScript。你也可以用HTML返回它,傳輸更重,但加載速度要快得多。

(我希望你能理解,因爲我的英語很糟糕)

0

沒有它了不可能的事情,你應該添加一些請求處理部分響應,在服務器端,您應該部分數據。在$ .Ajax(jQuery)選項異步中,同步請求可能會臨時鎖定瀏覽器,並在請求處於活動狀態時禁用任何操作。

1

像亞歷克斯說,你不能開始展示部分反應......我敢打賭,你的等待時間與才能查詢並返回數據集,而不是它需要渲染日期的時間。這就是說,你可以很容易地創建功能,以獲得前20%的記錄,然後試圖獲得最後的80%。當然,你會異步加載每個結果。

這樣做的缺點是,你必須要產生2個請求/響應週期和2個數據庫查詢。

只是好奇多長時間需要(使用SQL經理爲例)來運行自己的網站之外的SQL查詢?實際返回的數據量是10kb還是1000kb?如果您有很多文本數據,請查看添加壓縮到您的響應。

1

您可以使用隱藏的IFRAME接收響應,該響應使用ASP response.flush方法寫入(輸出遞增形成的響應)。然後,使用一個js間隔,可以查詢這個iframe的身體得到更新的內容...

0

這裏是簡單的解決方案。 1.你應該創建一個單獨的asp.net頁面,其中將採取1參數,開始記錄號碼, 你應該確保有一個唯一的記錄號碼錶。並從給定的起始記錄號檢索20行。 2.您需要調用AJAX get方法,該方法通過每次遞增20個記錄號遞歸,直到獲得響應爲NULL。

希望它會解決。

0

而是呈現出局部的反應,你爲什麼不只是顯示數據的服務器端分頁表中。如果您有許多記錄,則只需在頁面上顯示10條記錄,然後返回到數據庫,以便在用戶頁面訪問數據時獲取下一個記錄。