controlo de paging ASP.NET [fechado]
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.
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
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 ...
- Número total de páginas disponíveis de acordo com os dados subjacentes
- 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 = "…";
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
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