2010-07-07 69 views
12

Necesito usar el procesamiento del lado del servidor jquery datatable (http://datatables.net) para mi aplicación asp.net mvc (C#).usando jquery datatable para el procesamiento del lado del servidor con paginación, filtrado y búsqueda

Mi aplicación tiene miles de registros para mostrar en la tabla como lista. Estoy usando jquery datatable para habilitar la paginación, el filtrado y la búsqueda.

¿Hay alguna buena referencia/artículos para el procesamiento del lado del servidor jquery datatable para usar con asp.net mvc (C#)?

+0

Sugeriría https://www.echosteg.com/jquery-datatables-asp.net-mvc5-server-side – cynx

Respuesta

1
+0

Actualmente estoy trabajando en un problema similar. ¿Sabes si el primer enlace sigue siendo la mejor manera de manejar esto? – PFranchise

+0

Jaja, tal vez "la mejor manera" no es una pregunta contestable. Pero, supongo que solo quiero decir, ¿recomendarías a alguien que todavía use ese método? – PFranchise

5

Hola Este enlace puede ser útil para usted ...

http://www.dotnetawesome.com/2015/11/jquery-datatable-server-side-pagination-sorting.html

Aquí el artículo sobre jQuery Datatable la paginación del lado del servidor y la clasificación en ASP.NET MVC, explicó paso a paso en asp.net mvc (C#) como servidor dside Voy a referirme a este artículo [jQuery Datatable paginación del lado del servidor y clasificación en ASP.NET MVC

jQu ery código para la configuración de jQuery datables

<script> 
    $(document).ready(function() { 
     $("#myTable").DataTable({ 
      "processing": true, // for show progress bar 
      "serverSide": true, // for process server side 
      "filter": false, // this is for disable filter (search box) 
      "orderMulti": false, // for disable multiple column at once 
      "ajax": { 
       "url": "/home/LoadData", 
       "type": "POST", 
       "datatype": "json" 
      }, 
      "columns": [ 
        { "data": "ContactName", "name": "ContactName", "autoWidth": true }, 
        { "data": "CompanyName", "name": "CompanyName", "autoWidth": true }, 
        { "data": "Phone", "name": "Phone", "autoWidth": true }, 
        { "data": "Country", "name": "Country", "autoWidth": true }, 
        { "data": "City", "name": "City", "autoWidth": true }, 
        { "data": "PostalCode", "name": "PostalCode", "autoWidth": true } 
      ] 
     }); 
    }); 
</script> 

ASP.NET C# Código (MVC)

[HttpPost] 
    public ActionResult LoadData() 
    { 

     var draw = Request.Form.GetValues("draw").FirstOrDefault(); 
     var start = Request.Form.GetValues("start").FirstOrDefault(); 
     var length = Request.Form.GetValues("length").FirstOrDefault(); 
     //Find Order Column 
     var sortColumn = Request.Form.GetValues("columns[" + Request.Form.GetValues("order[0][column]").FirstOrDefault() + "][name]").FirstOrDefault(); 
     var sortColumnDir = Request.Form.GetValues("order[0][dir]").FirstOrDefault(); 


     int pageSize = length != null? Convert.ToInt32(length) : 0; 
     int skip = start != null ? Convert.ToInt32(start) : 0; 
     int recordsTotal = 0; 
     using (MyDatatableEntities dc = new MyDatatableEntities()) 
     { 

      var v = (from a in dc.Customers select a); 

      //SORT 
      if (!(string.IsNullOrEmpty(sortColumn) && string.IsNullOrEmpty(sortColumnDir))) 
      { 
       v = v.OrderBy(sortColumn + " " + sortColumnDir); 
      } 

      recordsTotal = v.Count(); 
      var data = v.Skip(skip).Take(pageSize).ToList(); 
      return Json(new { draw = draw, recordsFiltered = recordsTotal, recordsTotal = recordsTotal, data = data }, JsonRequestBehavior.AllowGet); 
     } 
    } 
+0

¿Cómo puedo obtener una columna específica? Digamos, por ejemplo, "Condado" –

1

favor seguir este código Es muy simple

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#AllUsers").DataTable({ 
     "processing": true, // for show progress bar 
     "serverSide": true, // for process server side 
     "filter": true, // this is for disable filter (search box) 
     "orderMulti": false, // for disable multiple column at once 
     "ajax": { 
      "url": "@Url.Content("~/Users/GetAllUsers")", 
      "type": "POST", 
      "datatype": "json" 
     }, 
     "columns": [ 
      { data: 'UserID', name: 'UserID', "autoWidth": true }, 
      { data: 'Name', name: 'Name', "autoWidth": true }, 
      { data: 'Email', name: 'Email', "autoWidth": true }, 
      { data: 'UserRole', name: 'UserRole', "autoWidth": true }, 
      { data: 'Status', name: 'Status', "autoWidth": true }, 
{ 
    data: '', name: '', "autoWidth": true, "orderable": false, mRender: function (data, colo, row) { 
     return "<i class='fa fa-trash' style='cursor:pointer'></i>"; 
    } 
} 
     ] 
    }); 
}); 

y esto es Controller método

public JsonResult GetAllUsers() 
    { 
     JsonResult result = new JsonResult(); 
     try 
     { 
      // Initialization. 
      string search = Request.Form.GetValues("search[value]")[0]; 
      string draw = Request.Form.GetValues("draw")[0]; 
      string order = Request.Form.GetValues("order[0][column]")[0]; 
      string orderDir = Request.Form.GetValues("order[0][dir]")[0]; 
      int startRec = Convert.ToInt32(Request.Form.GetValues("start")[0]); 
      int pageSize = Convert.ToInt32(Request.Form.GetValues("length")[0]); 
      // Loading. 
      List<User> data = _userReps.AllUsers().ToList(); 
      // Total record count. 
      int totalRecords = data.Count; 
      // Verification. 
      if (!string.IsNullOrEmpty(search) && 
       !string.IsNullOrWhiteSpace(search)) 
      { 
       // Apply search 
       data = data.Where(p => p.FirstName.ToString().ToLower().Contains(search.ToLower()) || 
        p.LastName.ToLower().Contains(search.ToLower()) || 
        p.EmailID.ToString().ToLower().Contains(search.ToLower()) || 
        p.UserRole.UserRoleName.ToLower().Contains(search.ToLower()) || 
        p.UserStatus.Name.ToLower().Contains(search.ToLower()) 
       ).ToList(); 
      } 
      // Sorting. 
      if (!(string.IsNullOrEmpty(order) && string.IsNullOrEmpty(orderDir))) 
      { 
       data = data.OrderBy(order + " " + orderDir).ToList(); 
      } 
      int recFilter = data.Count; 
      data = data.Skip(startRec).Take(pageSize).ToList(); 
      var modifiedData = data.Select(d => 
       new { 
       UserID= d.UserID, 
       Name= d.FirstName + " "+ d.LastName, 
       Email= d.EmailID, 
       Status= d.UserStatus.Name, 
       UserRole= d.UserRole.UserRoleName 
       } 
       ); 
      // Loading drop down lists. 
      result = this.Json(new 
      { 
       draw = Convert.ToInt32(draw), 
       recordsTotal = totalRecords, 
       recordsFiltered = recFilter, 
       data = modifiedData 
      }, JsonRequestBehavior.AllowGet); 
     } 
     catch (Exception ex) 
     { 
      // Info 
      Console.Write(ex); 
     } 
     // Return info. 
     return result; 
    } 
Cuestiones relacionadas