Pregunta

¿Hay algún ayudante html para la navegación de la página? p.ej. si tengo 1000 registros para mostrar, quiero mostrar el enlace anterior 1 2 3 4 ... etc. Siguiente debajo de la colección filtrada.

¿Alguien sabe algo por ahí?

Otros consejos

Si está creando una tabla de datos a partir de datos JSON, recomiendo el componente de tabla de datos YUI (Yahoo UI Library) ( http://developer.yahoo.com/yui/datatable/ ). Realiza la paginación muy bien y tiene la opción de devolver todo el conjunto de registros para comenzar y luego realizar la paginación a través de todo el lado del cliente o devolver un conjunto paginado desde el servidor.

Probablemente no se ajuste a tu escenario, pero solo pensé que lo mencionaría.

Tengo una cuadrícula de paginación en mi Datos dinámicos para la aplicación de muestra de MVC , pero la cuadrícula está renderizada a mano. Los datos están utilizando PagedList, que proviene de Rob Conery (que a su vez creo que lo obtuvo de ScottGu).

He estado pensando en cómo se vería un ayudante de grilla paginada para MVC ...

Lo que he hecho para la paginación hasta ahora es crear un control de Buscapersonas, Se necesita una url de paginación, una identificación del elemento html para la actualización, el número de página, el tamaño de la página y el recuento total.

La url de paginación tiene el formato de controlador / acción donde la acción devuelve una cadena html (la página de datos representada)

El buscapersonas agrega una lista de enlaces de javascript para las páginas. Estos enlaces llaman a una función ajax basada en jQuery que llega a la url de paginación. Cada clic en la 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<*>quot;, 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>" );
}

Las publicaciones de javascript en la url de paginación, por lo que la acción deberá hacer algo como:

int.TryParse (Request.Params [" pageNumber "], fuera de la página)  int.TryParse (Request.Params [" pageSize "], fuera de tamaño))

y use los resultados con sus componentes de acceso a datos para tomar la página de datos, procesarla como html y devolverla.

Espero que ayude, puedo ampliarlo si es necesario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top