Buscar

Últimas inserções

Gerando planilhas XLS para Excel com formatação de colunas
MD5 direto no Sql Server
Aplicação demora muito para inicializar quando VisualStudio está "Loading Symbols"
Fazendo Painel de Leds em menos usando System.Drawing(parte 3)
Fazendo Painel de Leds em menos usando System.Drawing(parte 2)
- TODAS AS DICAS

Top Poggers (sempre)

Jar Jar Binks (136)
Cuban Pete (127)
Tufo (28)

Top Poggers (30 dias)


Área restrita

Logon

pogMasters.NET

Início
Busca Avançada
Contato

RSS
 

Paginando Datalists ou Repeaters

ASP.NET

19/08/2007 por Cuban Pete


Uma grande dificuldade pra quem vem do ASP é achar o RecordSet no asp.net pra poder já setar as propriedades de paginação quando esta é requerida em um projeto.

Fato é alguns controles já tem paginação encapsulada, entre eles o GridView e o FormView. No caso do GridView, o mesmo é um controle fantástico e por essa razão é um menos performático que o DataList ou um Repeater.

Para podermos paginar dados nestes controles temos algumas alternativas e uma delas eu demonstrarei nessa dica, é o uso do objeto PagedDataSource.

O PagedDataSource tem um nome bem sugestivo, você pode associar ele à uma fonte de dados e depois vincular seu controle (um datalist, repeater, dropdownlist, etc) à ele. É bem simples.

Abaixou vou postar um exemplo de implementação do PagedDataSource num ObjectDataSource. Este é só um exemplo, se vc quiser tb pode vinculá-lo com SqlDataSources, AccessDataSources, DataSets e assim por diante.

[C#]
namespace pogMasters
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
GetData();
}

private void GetData()
{
PagedDataSource pgds = new PagedDataSource();
pgds.AllowPaging = true; //Seta paginação no PagedDataSource
pgds.DataSource = ObjectDataSource1.Select(); // No caso, está setando como datasource o método select do ObjectDataSource mas pode ser por exemplo, um DataSet.
pgds.PageSize = 3; //Número de registros por página

pgds.CurrentPageIndex = PaginaAtual; //Seta a página atual

DataList1.DataSource = pgds; //Setando o objeto como data source do DataList
DataList1.DataBind();
}


public int PaginaAtual //Propriedade da página atual, colocada no viewstate
{
get
{
object o = this.ViewState["PaginaAtual"];
if (o == null || (int)o < 0)
return 0;
else
return (int)o;
}

set
{
this.ViewState["PaginaAtual"] = value;
}
}

// Código do botao ANTERIOR
protected void btnPrev_Click(object sender, EventArgs e)
{
PaginaAtual--;
GetData();
}

// Código do botao PROXIMO
protected void btnNext_Click(object sender, EventArgs e)
{
PaginaAtual++;
GetData();
}
}
}

Pronto, sem dor de cabeça conseguimos paginar nossos resultados facilmente. Navegando pelas propriedades do PagedDataSource voces ainda poderão ver propriedades interessantes como isFirstPage (é primeira página) e isLastPage p/ implementar por exemplo, a visibilidade ou não dos botões de ANTERIOR e PRÓXIMO.

Até++
 
   


Comentários sobre o artigo

16/04/2008 por NeTo

> Usei esse código agorinha.. mto bom.. PogMasters.net eh d++

07/08/2008 por Fernando

> E eu usei hoje denovo... Quase 1 ano depois.

15/09/2008 por ClayTon

> Minha vez...

16/09/2008 por Paulo César

> Cara,

Eu usei uma DLL para fazer a paginação de um datalist. Agora sém dúvidas esta tua dica é show de bola. Já adicionei entre meus favoritos. abraço

15/01/2009 por jorge

> e ai pessoal esta procurando esse codigo a mais de uma semana e so aq encontrei essa maravilha de codigo...

dei uma implementada usando o sql data source...

vou colocar aq pra galera ve..

pgds.DataSource = SqlDataSource1.Select(DataSourceSelectArguments.Empty);

18/01/2009 por Cuban Pete

> Poxa legal Jorge, tai um outro bom jeito de usar o pageddatasource! =)

02/03/2009 por Maressa Oliveira

> Otimooo Artigo!!!

Me ajudou muito!

01/06/2009 por Danilo

> Valeu Rapa, boa!

22/10/2009 por Fagundes

> Vlw , precisava disso e achei por aqui !!!
rsrs

04/01/2010 por Arnaldo

> eu uso sqlDataSource e da o seguinta erro: The name 'DataList1' does not exist in the current context
da 2 erros desses.
alguem poderia me ajuda??
nao entendo muito de asp.net, pois estou começando agora, e só falta esse problema para resolver para entregar o site para o cliente.
por favor, me ajudem, URGENTEE...
Obrigado

29/07/2010 por Evilasio

> poxa man isso salvou minha vida :D vlw

31/08/2010 por jeferson

> no meu caso tentei setar no lugar de objectdatasource o Sqldatasource.select() e me ocorreu um erro dizendo "Error :No overload for method 'Select' takes '0' arguments'

??? alguem??

31/08/2010 por jeferson

> dãããã... naum vi que o jorgem tinha dado a resposta pro meu problema.. valeu men!! (y)

06/05/2011 por Tailan

> muito bom o código, fiquei travado nessa etapa dois dias.. hehe valeu

Poste um comentário >>
Nome  
Email
Comentário    
Postar Comentário