2011-09-23 18 views
18

Estoy trabajando en una solución de error ahora para una aplicación en el trabajo donde el desarrollador anterior (desde entonces) no se molestó en paginar los resultados de datos en una página destinada específicamente a la lista los resultados de los datos.JQuery DataTables Problemas de paginación del lado del servidor .Net

Esto, por supuesto, se ha agravado porque los usuarios están empezando a ver errores de secuencia de comandos de larga ejecución en IE. Esto, combinado con el gran volumen de datos, hace que las páginas web sean casi inútiles.

Avance rápido a mis intentos de solucionarlo y han ido bastante bien. El sitio es un sitio .NET MVC 2 que se desarrolló utilizando DataTables para agregar funcionalidad de búsqueda/clasificación/paginación en el cliente. Acababa de completar una tarea similar usando jqGrid, así que pensé que esto sería relativamente sencillo. Y ha sido, excepto un pequeño problema. No puedo por mi vida obtener enlaces de página para generar.

Una rápida vista de resultados:

Los resultados saben que hay 2086 registros en esta consulta:

enter image description here

Pero enlaces de paginación no se generan.

enter image description here

Mi método de acción está regresando JSON a través de

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

donde

param.sEcho = "1", iTotalRecords = 2086, iTotalDisplayRecords = 25, y aaData es el resultado de matriz de datos para mostrar

Para ser thor ough, que es el estado de inicialización tabla de datos:

$("#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] } 
     ] 
    }); 

Am Me falta un cierto ajuste que impida la generación de tablas de datos de paginación correctamente a través de la recuperación de datos del lado del servidor?

Respuesta

30

Su iTotalDisplayRecords es igual a 25, por lo que las tablas de datos creen que solo hay 25 contratos en el lado del servidor y la segunda página no es necesaria porque todos ellos ya se muestran en la página actual. Esta es comon error - si usted toma un vistazo a la sección de JQuery MVC tutorial Implementación de paginación del lado del servidor, verá que hay tres números:

  1. iTotalRecords = allCompanies.Count() que representa todas las entradas en la base de datos (en su caso 2086)
  2. iTotalDisplayRecords = filteredCompanies.Count() que representa el número de registros que coinciden con la condición de búsqueda actual. Si no usó el filtrado, este número debe ser el mismo que iTotalRecords 2086, pero en su caso es 25.
  3. resultado.Contacto: esto es 25. Este número no se transmite en la respuesta JSON porque DataTables ya sabe que hay debe ser de 25 registros por página.

Si pone all.Count en lugar del resultado.Count into the iTotalDisplayRecords DataTables mostrará paging.iTotalDisplayRecords y iTotalRecords se utilizan para mostrar mensaje "Mostrando 1 a 25 de iTotalDisplayRecords (iTotalRecords en total)"

Si iTotalDisplayRecords es igual a 25, DataTables mostrarán mensaje "Mostrando 1 a 25 de 25 (iTotalRecords en total)" , y asumir que no hay página 2; por lo tanto, la paginación se desactivará, como en su ejemplo.

Jovan

+0

Gracias por la respuesta! Ese fue exactamente el problema. – Khepri

+0

que estaba haciendo exactamente lo mismo, gracias por la aclaración. – PseudoNinja

+0

mí tres ....... – steveareeno

Cuestiones relacionadas