2015-09-06 21 views
0

在退出datatables的問題後,我希望從我的sql表中獲得所有數據,但是在我們的網站上運行它會造成一些嚴重滯後,因爲它有超過8000條記錄。所以我嘗試在我的控制器中使用Take(10).ToList();,但jquery數據表只會填充10條記錄(顯然)。我希望我的控制器中有一個簡單的方法或方法,因爲我一次只能載入十條記錄。但仍然保持整個sql表格在數據表中的分頁。 (遠射)Jquery Datatables,分頁和mvc。從數據庫中獲取x的金額

例如,如果我將整個表數據加載到數據表中,它有800+頁面頁面。如果我一次只取10條記錄,數據表只會顯示一頁。我需要一次讀取10條記錄,但也會顯示800個分頁頁面,當我點擊下一頁或在特定的分頁頁面上時,它將加載這些記錄。這可以通過controller/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> 

回答

-2

只需調整你的方法RECE香港專業教育學院2個參數:PAGENUMBERpageResults

比增加Skip通過你不想顯示的結果,跳,並使用Take開始從點Skip跳過服用效果。

用法:

  • Listing(1, 20) - 不能給我們造成0-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(); 
} 
+0

什麼提供'int pageNumber'和'int pageResults'? –

+0

你。通過這兩個參數調用這個方法的人。他們可以從用戶執行的'POST'到達第2頁,或者從另一個需要結果的方法進入。 –

+0

您應該向我們提供更多信息,客戶端代碼或服務器代碼首先調用'Listing'行爲。 –

0

我建議你通過datatables.net的服務器端處理。請參考Datatables.net