propiedades full example español entries ejemplo jquery .net asp.net-mvc asp.net-mvc-2 datatables

full - Problemas de paginación del lado del servidor.Net de JQuery DataTables



datatables show 25 entries default (1)

Estoy trabajando en una solución de errores en este momento para una aplicación en el trabajo donde el desarrollador anterior (desde que se fue) no se molestó en paginar los resultados de los datos en una página diseñada específicamente para enumerar los resultados de los datos.

Esto, por supuesto, ha mejorado su cabeza, ya que los usuarios están comenzando a ver errores de script de larga ejecución en IE. Esto, combinado con el gran volumen de datos, hace que las páginas web sean casi inútiles.

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

Una vista rápida de resultados:

Los resultados saben que hay 2086 registros en esta consulta:

Pero los enlaces de paginación no se generan.

Mi método de acción es devolver JSON a través de

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

dónde

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

Para ser concienzudo, él es la instrucción de inicialización 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] } ] });

¿Me falta alguna configuración que impida que DataTables genere correctamente la paginación a través de la recuperación de datos del servidor?


Su iTotalDisplayRecords es igual a 25, por lo que los datos se pueden considerar 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. Esto es un error común: si echa un vistazo a la sección del tutorial de JQuery MVC Implementación de la 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 = filterCompanies.Count () que representa el número de registros que coinciden con la condición de búsqueda actual. Si no usó el filtro, este número debería ser el mismo que el de iTotalRecords 2086, pero en su caso es 25.
  3. resultado.Cuento: esto es 25. Este número no se pasa en la respuesta JSON porque DataTables ya sabe que debe haber 25 registros por página.

Si coloca all.Count en lugar del resultado.Count en las tablas de datos de iTotalDisplayRecords mostrará la paginación. iTotalDisplayRecords y iTotalRecords se utilizan para mostrar el mensaje "Mostrando 1 a 25 de iTotalDisplayRecords (iTotalRecords en total)"

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

Jovan