Pergunta

Eu estou procurando um controle de paginação decente em ASP.NET, bem como o pager Stackoverflow. Alguém pode recomendar um?

Eu prefiro aquele que não usou Postback seja, apenas uma querystring personalizável.

Foi útil?

Solução 2

Eu estava esperando mais respostas, mas parece que um monte de pessoas apenas fazer a sua própria. Eu encontrei um decente que é mantida com bastante frequência na codeproject.com

cp

Não é exatamente o mesmo que aquele stackoverflow.com. Seria bom se houvesse uma decente controle de código aberto que teve uma variedade de diferentes opções de saída.

Outras dicas

É muito fácil para rolar o seu próprio. Eu criei um controle de usuário simples com base no pager de estouro de pilha com duas propriedades ...

  1. Número total de páginas disponíveis de acordo com os dados subjacentes
  2. Número de ligações para mostrar

A página selecionada é determinada através da leitura da string de consulta. O maior desafio foi alterar a URL com o novo número da página. Este método usa um parâmetro de cadeia de consulta 'p' para especificar qual página para exibir ...

string getLink(int toPage)
{
    NameValueCollection query = HttpUtility.ParseQueryString(Request.Url.Query);
    query["p"] = toPage.ToString();

    string url = Request.Path;

    for(int i = 0; i < query.Count; i++)
    {
        url += string.Format("{0}{1}={2}", 
            i == 0 ? "?" : "&", 
            query.Keys[i], 
            string.Join(",", query.GetValues(i)));
    }

    return url;
}

Uma fórmula simples para determinar o intervalo de números de páginas para mostrar ...

int min = Math.Min(Math.Max(0, Selected - (PageLinksToShow / 2)), Math.Max(0, PageCount - PageLinksToShow + 1));
int max = Math.Min(PageCount, min + PageLinksToShow);

Cada link, em seguida, será gerado usando algo como (onde min e max especificar o intervalo de páginas apontam para criar) ...

for (int i = min; i <= max; i++)
{
    HyperLink btn = new HyperLink();
    btn.Text = (i + 1).ToString();
    btn.NavigateUrl = getLink(i);
    btn.CssClass = "pageNumbers" + (Selected == i ? " current" : string.Empty);
    this.Controls.Add(btn);
}

Pode-se também criar 'anterior' (e 'Next') botões ...

HyperLink previous = new HyperLink();
previous.Text = "Previous";
previous.NavigateUrl = getLink(Selected - 1);

A primeira e última botões são para a frente ...

HyperLink previous = new HyperLink();
previous.Text = "1";
first.NavigateUrl = getLink(0);

Ao determinar quando mostrar o "...", mostram um controle literal quando a faixa de ligação não é ao lado da primeira ou última página ...

if (min > 0)
{
    Literal spacer = new Literal();
    spacer.Text = "&hellip;";
    this.Controls.Add(spacer);
}

Faça o mesmo para acima de "max

Todo esse código é colocado em um método de substituição de CreateChildControls.

Eu tenho trabalhado com os controles de página DevExpress e Telerik e preferem o pager DevExpress. Eu não sou certeza , se o pager DevExpress pode trabalhar diretamente com uma querystring, mas eu ficaria surpreso se ele não o fez, pois é muito flexível. Tanto quanto paginação entre as páginas existentes após o download, tudo pode residir no cliente ou, se uma viagem para o servidor é necessário, o controle é totalmente AJAX equipada. Eu sugiro que você comece a sua pesquisa no www.devexpress.com e então confira www.Telerik.com bem (que também é AJAX equipado).

Não é um controle, mas esta é a maneira de implementar a paginação no nível de DB: SQL Server 2005 paginação

Eu escrevi um controle pager chamado: Flexy Pager
Leia mais: http: //www.codeproject .com / artigos / 748270 / Flexy-Pager para-ASP-NET-WebForm-MVC

enter descrição da imagem aqui

Você pode tentar NPager . Usa string query para os índices de páginas, há postagens. Precisa de Bootstrap para denominar, no entanto, você pode ter seus próprios classes css personalizado para o controle usando 'paginação' CSS class.Here é um trabalho Demonstração

enter descrição da imagem aqui

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top