Tratamento de erros: System.Web.HttpException: PageIndexChanging

Vamos estrear uma nova categoria do blog hoje: Erros. Decidi criar essa categoria para postar os erros mais comuns ao programar C# ASP.NET e a forma de resolve-los. Vamos lá:

Erro:

GridView ‘gvPosts’ acionou o evento PageIndexChanging, que não foi tratado.

Descrição: Ocorreu uma exceção não tratada durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.

Detalhes da Exceção: System.Web.HttpException: GridView ‘gvPosts’ acionou o evento PageIndexChanging, que não foi tratado.

Erro de Origem:

Exceção não tratada foi gerada durante a execução da atual solicitação da Web. As informações relacionadas à origem e ao local da exceção podem ser identificadas usando-se o rastreamento de pilha de exceção abaixo.

Explicação e Solução:

Esse erro ocorre quando você clica na segunda página ou outra da paginação de um GridView que foi carregado via C#.

Para solucionar, adicione o seguinte método no seu código C#:



protected void gvPosts_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gvPosts.PageIndex = e.NewPageIndex;
gvPosts.DataSource = meus_posts;
gvPosts.DataBind();
}


Notem que o nome da minha GridView é gvPosts, por isso o método chama gvPosts_PageIndexChanging. Não esqueça de substituir gvPosts pelo ID da sua GridView.

No DataSource, onde está meus_posts deve ir seu DataSource (fonte de dados que carrega o GridView, ex: list, dataTable, etc). No meu caso, carrego o GridView com um List quando faço Load na página, porém, como tem uma busca, esse valor é alterado no decorrer da execução (quando alguém faz uma busca). Então não posso manter um valor fixo, para resolver isso, cada vez que é mudado o DataSource do GridView, seja através de uma busca, ou através de um evento (clique em botão, Load na página, etc) eu salvo esse DataSource numa sessão e resgato nesse método onde está meus_posts.

Você também deve chamar esse método no seu GridView, para isso, use como base o código abaixo:

<asp:GridView ID=“gvPosts” runat=“server” OnPageIndexChanging=“gvPosts_PageIndexChanging”>

Note que na TAG da GridView utilizamos o OnPageIndexChanging para chamar o método gvPosts_PageIndexChanging que criamos no C#.

Dessa maneira conseguimos resolver esse erro de forma simples e rápida!

Fiquem atentos a mais soluções de erros comuns no C# / ASP.NET.

3 Comentários

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

*