Lo que he hecho para paginar hasta ahora es crear un control de buscapersonas, Se necesita una URL de paginación, id de elemento html para actualizar, número de página, tamaño de página y recuento total.
La url paginación es de la forma controlador/acción, donde la acción devuelve una cadena HTML (la página representada de datos)
El localizador anexa una lista de enlaces javascript para las páginas. Estos enlaces llaman a una función ajax basada en jQuery que golpea la url de búsqueda. Cada clic de página reemplaza el contenido actual del elemento html con los resultados de la llamada ajax. Algo como esto:
public string Render()
{
var buffer = new StringBuilder(1000);
buffer.AppendLine(@"<ul class=""datatable_pager"">")
.AppendLine("\t<li>Additional Pages:</li>");
int numberOfPages = TotalItemCount % PageSize == 0 ? TotalItemCount/PageSize : TotalItemCount/PageSize + 1;
for(int i = 0; i < numberOfPages; i++)
{
AppendPageLink(buffer, i);
}
buffer.AppendLine("\t</ul>");
AppendPagingJS(buffer);
return buffer.ToString();
}
private void AppendPageLink(StringBuilder buffer, int i)
{
buffer.Append("\t\t<li><a href=\"")
.Append(PagingLink.Replace("$PAGE$", i.ToString()))
.Append("\">")
.Append(i.ToString())
.Append("</a>")
.AppendLine("\t\t</li>");
}
private void AppendPagingJS(StringBuilder buffer)
{
buffer.AppendLine(@"
<script type=""text/javascript"">
function page(page, size, updateElement)
{
$.post('" + PagingUrl + @"',
{
pageNumber: page,
pageSize: size,
},
function(response)
{
$(""#"" + updateElement).html(response);
},
""html""
);
}
</script>");
}
Los mensajes de javascript a la url de paginación, por lo que la acción tendrá que luego hacer algo como:
int.TryParse (Request.Params [ "PageNumber"], página cabo) int.TryParse (Request.Params ["pageSize"], out size))
y utiliza los resultados con tus componentes de acceso a datos para tomar la página de datos, renderizarla como html y devolverla.
Espero que ayude, puedo ampliarlo si es necesario.
Un enlace es un 404, uno apunta a una página de inicio de un blog, y el último enlace no es útil en absoluto. FAIL! – Martin
Después de algunas búsquedas, este enlace me indicó algún código que me ayudó: http://blogs.taiga.nl/martijn/2008/08/27/paging-with-aspnet-mvc/ – Martin