Question

Existe-t-il des aides HTML pour la navigation de page? par exemple. si j'ai 1000 enregistrements à afficher, je souhaite afficher le lien Précédent 1 2 3 4 ... etc suivant sous la collection filtrée.

Quelqu'un sait-il quelque chose là-bas?

Autres conseils

Si vous créez une table de données à partir de données JSON, je recommande vivement le composant DataTable YUI (Yahoo UI Library) ( http://developer.yahoo.com/yui/datatable/ ). La pagination fonctionne très bien et vous avez la possibilité de renvoyer tout le jeu d’enregistrements au début puis de la paginer à travers tout cela côté client ou de renvoyer un jeu paginé depuis le serveur.

Ne correspondra probablement pas à votre scénario, mais je pensais juste que je le mentionnerais.

Mon exemple de données dynamiques pour MVC contient une grille de radiomessagerie. , mais la grille est rendue à la main. Les données utilisent PagedList, qui provient de Rob Conery (qui, à mon avis, l’a obtenue de ScottGu).

J'ai réfléchi à ce à quoi pourrait ressembler un assistant de grille paginée pour MVC ...

Ce que j’ai fait pour la pagination jusqu’à présent, c’est de créer un contrôle Pager, Il faut une URL de pagination, un identifiant d'élément HTML pour la mise à jour, le numéro de page, la taille de la page et le nombre total.

L'URL de pagination est du type contrôleur / action où l'action renvoie une chaîne html (la page de données rendue)

Le pager ajoute une liste de liens javascript pour les pages. Ces liens appellent une fonction ajax basée sur jQuery qui frappe l'URL de pagination. Chaque clic de page remplace le contenu actuel de l'élément html par les résultats de l'appel ajax. Quelque chose comme ça:

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>" );
}

Le javascript étant publié dans l'URL de pagination, l'action devra ensuite faire quelque chose comme:

int.TryParse (Request.Params [" pageNumber &];], out page)  int.TryParse (Request.Params [" pageSize "], out size))

et utilisez les résultats avec vos composants d'accès aux données pour récupérer la page de données, la restituer au format HTML et la renvoyer.

J'espère que cela aidera, je pourrai le développer si besoin est.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top