滾動條加載數據是當前比較流行的分頁方式。
操作方式:根據滾動條的當前位置來加載更多的數據。
主要有2種形式。
1:邊滾動邊加載數據,一開始把容器的高度計算好,當滾動條移動到空白位置時加載更多的數據。類似於 http://qing.blog.sina.com.cn/tag/%E6%97%B6%E5%B0%9A
2:滾動到底部加載數據,當滾動條移動到底部時加載更多的數據。類似於“百度圖片”的效果。
它的優點:可以利用滾輪進行分頁,而不需要點擊按鈕,方便用戶快速地瀏覽完整的信息,不用經常點擊分頁按鈕。在手機端的效果特別明顯。
它的缺點:對於想快速查看某些數據時不是很方便,假如用戶想查看靠后的數據時,需要先加載前面的所有數據才能找到想要的數據。
實現方式:利用 ASP.NET MVC + Jquery 框架比較容易實現這種效果(由於本人最近都沒有使用 WEBFORM ,比較生疏,就不拿出來獻丑)
已滾動到底部加載數據為例子說明,這個實現起來比較容易。
html 部分,div : Container 控制滾動條的容器,div : DataList 加載數據的容器。 Container 需要 加上 height: 420px;overflow-y: auto; 樣式
JS 部分,主要是針對 Container容器的滾動條進行操作,判斷是否去掉底部。
可使用 $("#Container")[0].scrollTop + $("#Container").height() >= $("#Container")[0].scrollHeight - 10,關於這幾個屬性的詳細說明請自行在網絡上查看,
需要說明的是 -10 主要是為了兼容chrome 瀏覽器,不同瀏覽器對滾動條的屬性解析會不同,如果列表樣式過於復雜,需要反復調試。

1 function Add_Data() { 2 var scrollTop = $("#Container")[0].scrollTop; 3 if (!complete && loaded) { 4 if (scrollTop + $("#Container").height() >= $("#Container")[0].scrollHeight) { 5 getData(); 6 } 7 8 } 9 } 10 11 function getData() { 12 loaded = false; 13 $.ajax({ 14 url: '@Url.Action("MainListPanel", "Home")', 15 type: 'POST', 16 data: { 17 createTime: maxTime, 18 skipCount: skipCount, 19 takeCount: takeCount 20 }, 21 dataType: 'html', 22 timeout: 10000, 23 error: function () { alert('Error loading'); }, 24 beforeSend: function () { 25 //$("#DataList").append("<img class='loading' src='../../Content/ajaxloading.gif' />"); 26 $("#box").show(); 27 }, 28 success: function (result) { 29 loaded = true; 30 $("#box").hide(); 31 //$(".loading").remove(); 32 $("#DataList").append(result); 33 count++; 34 } 35 }); 36 }
服務器端 部分,主要是利用 linq 強大的 OrderByDescending,skip 和 take 方法,把已經加載過的數據過濾掉。