2013-05-23 5 views
1

Он также показывает ВСЕ записи вместо «11 из 14 из 14», например .. Как мне отправить сообщение только по 10 за раз? Я использовал эту статью как учебникИспользование jquery datatables. Почему работает пейджинг?

http://www.codeproject.com/Articles/155422/jQuery-DataTables-and-ASP-NET-MVC-Integration-Part

public ActionResult GetCurrentErrorsAJAX(JQueryDataTableParamModel param) 
    { 
     List<StepInstanceError> allCompanies = new List<StepInstanceError>(); 
     allCompanies = InstanceErrorExpert.GetAllErrors(); 

     IEnumerable<StepInstanceError> filteredCompanies; 
     filteredCompanies = allCompanies; 

     var sortColumnIndex = Convert.ToInt32(Request["iSortCol_0"]); 
     Func<StepInstanceError, string> orderingFunction = (c => sortColumnIndex == 1 ? c.FilePath : 
                  sortColumnIndex == 2 ? c.Notes : 
                  c.Notes); 

     var sortDirection = Request["sSortDir_0"]; // asc or desc 
     if (sortDirection == "asc") 
      filteredCompanies = filteredCompanies.OrderBy(item => orderingFunction); 
     else 
      filteredCompanies = filteredCompanies.OrderByDescending(item => orderingFunction); 

     var displayedCompanies = filteredCompanies; 

     var result = from c in displayedCompanies 
        select new[] { Convert.ToString(c.StepInstanceErrorID), 
            Convert.ToString(c.StepInstanceID), 
            Convert.ToString(c.ErrorRow), 
            Convert.ToString(c.Notes), 
            c.FilePath, 
            c.Notes, 
            Convert.ToString(c.DateCreated) 
     }; 

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

<script> 
$(function() { 
    var RefreshErrorTable = function() { 
     var oTable = $('#myDataTable').dataTable({ 
      "bServerSide": true, 
      "sAjaxSource": "Errors/GetCurrentErrorsAJAX", 
      "bProcessing": true, 
      "aoColumns": [ 
          { "sName": "StepInstanceID" }, 
          { "sName": "ErrorRow" }, 
          { "sName": "FilePath" }, 
          { "sName": "Notes" }, 
          { "sName": "DateCreated" } 
      ] 
     }); 
    } 

    RefreshErrorTable(); 
}); 

ответ

2

Для обработки на стороне сервера, DataTables также проходит iDisplayStart и iDisplayLength.

Ваш запрос должен включать это, чтобы ограничить количество возвращаемых строк. На этой странице примера показано следующее:

var displayedCompanies = filteredCompanies 
         .Skip(param.iDisplayStart) 
         .Take(param.iDisplayLength); 

По умолчанию (BPaginate) в DataTables должно быть включено по умолчанию. Сайт DataTables превосходный и может быть полезен: http://www.datatables.net/usage/features

Смежные вопросы