segunda-feira, 12 de outubro de 2009

DataPager - Dica para evitar a necessidade de se clicar 2x para que a paginação funcione

Fala, galera!!

Quando utilizamos o DataPager para paginarmos dados em um controle de repetição, como o Datalist, nos deparamos com um comportamento "estranho" da paginação.

Este comportamento só ocorre quando preenchemos o datasource do controle de repetição programaticamente através do Code-Behind.

O comportamento ao qual me refiro é a necessidade de se clicar 2x no link de paginação para que a mesma funcione corretamente. São necessários 2 postbacks para se visualizar o efeito do postback anterior.

Exemplo:
Imagine uma paginção de 1 a 5. Serão exibidos 5 links:1  2  3  4  5

Ao clicarmos na página 2, a página não muda. Ao clicarmos na página 3, são exibidos os dados página 2.
Como se houvesse um delay de 1 postback.

A correção para isso é bem simples.

Basta inserirmos o preenchimento do datasource do controle de repetição dentro do evento "PreRender" do controle.


Private Sub DataList1_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
        DataList1.datasource = ListaComResultados
        DataList1.databind()
    End Sub

Um abraço e até a próxima!!

Um comentário: