2011-09-23 81 views
18

我工作的一個bug修復,現在在工作中的應用,其中前開發(自去了)沒有刻意去專門分頁上市意味着頁面上的數據結果輸出數據結果。JQuery的數據表.NET服務器端分頁問題

當然,這已經飼養它醜陋的頭,因爲用戶已經開始看到在IE中長時間運行的腳本錯誤。這與純粹的數據量相結合,使網頁幾乎無用。

快進到我試圖修復它,而他們卻非常好。該網站是一個.NET MVC 2網站,它是使用DataTables在客戶端添加搜索/排序/分頁功能而開發的。我剛剛用jqGrid完成了一個類似的任務,所以認爲這將是相對簡單的。除了一個小問題之外。我不能爲我的生活獲取頁面鏈接來生成。

快速結果的看法:

結果知道,有2086條記錄在此查詢:

enter image description here

但不會生成分頁鏈接。

enter image description here

我的動作方法是通過

return Json(new 
       { 
       param.sEcho, 
       iTotalRecords = totalRecords, 
       iTotalDisplayRecords = filteredContracts.Count(), 
       aaData = result 
       }, 
      JsonRequestBehavior.AllowGet); 

返回JSON其中

param.sEcho = 「1」, iTotalRecords = 2086, iTotalDisplayRecords = 25, 和aaData是要顯示的數據的數組結果

待處理ough,他的數據表初始化語句:

$("#tblToDoItems").dataTable({ 
     'bServerSide': true, 
     'bProcessing': true, 
     'sAjaxSource': '/Home/GetContractList', 
     "bJQueryUI": true, 
     "bAutoWidth": false, 
     "bPaginate": true, 
     "sPaginationType": "full_numbers", 
     "iDisplayLength": 25, 
    /* make the first and last columns not sortable */ 
     "aoColumnDefs": [ 
      { "bSortable": false, "aTargets": [0, -1] } 
     ] 
    }); 

我失去了一些設置,將阻止數據表不能正常生成通過服務器端的數據檢索分頁?

回答

30

你iTotalDisplayRecords等於25,這樣的數據表認爲有25只在服務器端和第二頁的合同是不是必要的,因爲所有的人都已經在當前頁面上顯示。 這是COMON錯誤 - 如果你看看服務器端分頁的JQuery MVC tutorial部分實現,你會看到有三個數字:

  1. iTotalRecords = allCompanies.Count()代表數據庫中的所有條目(在您的案件2086)
  2. iTotalDisplayRecords = filteredCompanies.Count()較符合當前搜索條件的記錄數。如果您沒有使用過濾這個數字應該是相同iTotalRecords 2086,但在yourcase它是25
  3. result.Count - 這是25這個數字是不是在JSON響應中傳遞,因爲數據表已經知道,有應該是每頁25個記錄。

如果將all.Count代替result.Count進入iTotalDisplayRecords,DataTable將顯示分頁。iTotalDisplayRecords和iTotalRecords用於顯示消息 「顯示1到25 iTotalDisplayRecords的(iTotalRecords總共)」

如果iTotalDisplayRecords等於25,數據表將顯示消息「顯示1到25(總共iTotalRecords)25」 ,並假設沒有第2頁;因此,分頁將被禁用,如你的例子。

Jovan

+0

感謝您的回答!這正是問題所在。 – Khepri

+0

我在做同樣的事情,謝謝澄清。 – PseudoNinja

+0

我三....... – steveareeno