[英]Jquery Datatables, pagination and mvc. Take x amount from database
由於datatables
問題,我希望從sql表中獲取所有數據,但是在我們的網站上運行它會導致嚴重的延遲,因為它有8000多個記錄。 所以我嘗試使用Take(10).ToList();
在我的控制器中,但是jquery數據表只會填充10條記錄(顯然)。 我希望我的控制器中可以采用一種簡單的方法或方法,一次僅加載10條記錄。 但是仍將整個sql表的分頁保留在datatables中。 (遠射)
例如,如果我將整個表數據加載到數據表中,則其頁面將超過800頁。 如果我一次只記錄10條記錄,那么數據表將僅顯示一頁。 我需要一次記錄10條記錄,但還要顯示800頁的頁面,當我單擊下一頁或特定頁面時,它將加載這些記錄。 可以從控制器/ linq完成嗎? 無需在json / ajax通道上進行詳盡的長時間旅行。
控制者
public PartialViewResult Listing()
{
var model = _db.MyDataBase.Take(10).ToList();
查看 :
<table id="example" class="table table-striped table-bordered table-hover">
<tbody>
@foreach (var p in Model)
{
<tr class="gridRow" data-id="@p.MyId">
<td>@p.Id</td>
// etc....
腳本:
<script type="text/javascript">
$(function () {
// Initialize Example
$('#example').dataTable();
});
</script>
我建議您對datatables.net進行服務器端處理。 請參閱Datatables.net
只需調整您的方法即可接收2個參數: pageNumber pageResults
比增加Skip
你不想顯示的結果通過跳躍,並使用Take
開始從點取結果Skip
跳過。
用法:
Listing(1, 20)
1,20 Listing(1, 20)
-將給我們結果0-20 Listing(3, 20)
3,20 Listing(3, 20)
-將給我們結果60-80 Listing(5, 10)
-將給我們結果50-60 碼:
public PartialViewResult Listing(int pageNumber, int pageResults)
{
var model = _db.MyDataBase
.OrderBy(row => row.ID)
.Skip((pageNumber -1) * pageResults)
.Take(pageResults)
.ToList();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.