Domanda

Esistono helper HTML per la navigazione delle pagine. per esempio. se ho 1000 record da visualizzare, voglio visualizzare il precedente link 1 2 3 4 ... ecc. sotto la raccolta filtrata.

Qualcuno sa qualcosa là fuori?

Altri suggerimenti

Se si sta creando una tabella di dati dai dati JSON, consiglio vivamente il componente DataTable YUI (Yahoo UI Library) ( http://developer.yahoo.com/yui/datatable/ ). Effettua il paging molto bene e hai la possibilità di restituire l'intero set di record per iniziare e quindi effettuare il paging attraverso tutto quel lato client o restituire un set di paging dal server.

Probabilmente non si adatta al tuo scenario, ma ho pensato di menzionarlo.

Ho una griglia di paging nella mia Dati dinamici per l'applicazione di esempio MVC , ma la griglia è resa a mano. I dati utilizzano PagedList, che proviene da Rob Conery (che a sua volta penso che sia stato ottenuto da ScottGu).

Ho pensato a come potrebbe apparire un aiutante con griglia paginata per MVC ...

Quello che ho fatto finora per il paging è creare un controllo Pager, Richiede un URL di paging, ID elemento html per l'aggiornamento, numero di pagina, dimensione della pagina e conteggio totale.

L'URL di paging è del controller / azione del modulo in cui l'azione restituisce una stringa html (la pagina di rendering dei dati)

Il cercapersone aggiunge un elenco di collegamenti javascript per le pagine. Questi collegamenti chiamano una funzione Ajax basata su jQuery che colpisce l'URL di paging. Ogni clic sulla pagina sostituisce il contenuto corrente dell'elemento html con i risultati della chiamata ajax. Qualcosa del genere:

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

Il javascript pubblica nell'URL di paging, quindi l'azione dovrà quindi fare qualcosa del tipo:

int. TryParse (Request.Params [" pageNumber "], fuori pagina)  int.TryParse (Request.Params [" pageSize "], out size))

e usa i risultati con i tuoi componenti di accesso ai dati per afferrare la pagina di dati, renderla come HTML e restituirla.

Spero che aiuti, posso estenderlo se necessario.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top