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
Poste um comentário >>
|