Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Murilo Eduardo B. Santos

performance gridview com paginação nativa

Recommended Posts

Gostaria de fazer uma pergunta para o pessoal mais experiente em .net.

 

Se eu der um SELECT * FROM TABELA na minha procedure, e tiver uns 60 mil registros, e jogar num gridview com a paginação do .net usando:

 

AllowPaging="True"

onpageindexchanging="gridPageIndexChanging"

 

protected void gridPageIndexChanging(object sender, GridViewPageEventArgs e)
       {
           grid.PageIndex = e.NewPageIndex;
           grid.DataBind();
       }

 

Será que vou perder muita performance e ter problemas de tráfego, é melhor usar aquelas técnicas de paginação no sql e criar um componente para paginar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

se fizer dessa forma vai ficar carroça, pois vai trazer os 60.000 registros do banco de dados e depois fazer a paginação local, ainda mais SELECT *.

 

para paginação utilizo as técnicas do sql server ou oracle e utilizo o ObjectDataSource com o gridview, funciona legal e podes passar vários objetos como parâmetro: querystring(s), session(s) e controle(s) da página

 

exemplo:

http://www.israelaece.com/post/Explorando-o-GridView-Paginacao-de-Dados.aspx

Compartilhar este post


Link para o post
Compartilhar em outros sites

legal o link, bom que usa o esquema de camadas que estou trabalhando atualmente e não vou ter que criar um componente de paginação para gridview que acho que estaria reiventando a roda se criasse um. depois vou testar e tentar adaptar ao meu contexto, valeu pela dica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

legal o link, bom que usa o esquema de camadas que estou trabalhando atualmente e não vou ter que criar um componente de paginação para gridview que acho que estaria reiventando a roda se criasse um. depois vou testar e tentar adaptar ao meu contexto, valeu pela dica.

czt tb. uso em camadas sem problemas, se tiver utilizando em namespaces diferentes basta informar na propriedade TypeName do ObjectDataSouce , ex.: TypeName="RH.Funcionarios.clsGeral"

 

outra dica se utilizar session como parâmetro, pode usar o evento Load do ObjectDataSouce para verificar se a session ainda esta carrega e fazer o tratamento caso não estiver

 

e no evento Selected podemos pegar o total de registros:

       protected void odsOperacoes_Selected(object sender, ObjectDataSourceStatusEventArgs e)
       {
           if (e.ReturnValue != null && e.ReturnValue.GetType().Name.Equals("Int32"))
           {
               int iTest = 0;
               int.TryParse(e.ReturnValue.ToString(), out iTest);
               lblRowsAffected.Text = String.Format("({0} linha(s) encontrada(s))", iTest.ToString());
           }
       }

 

esse aqui mostra com a opção de ordenação e compara o método convencional trazendo todos os registro com esse trazendo somente os registros que serão visualizados: http://www.codeproject.com/KB/aspnet/Optimized_Paging_And_Sort.aspx

 

 

o único problema que encontrei foi caso adicionar mais parâmetros no método principal (SelectMethod), tem que adiciona-los tb. ao método de contagem (SelectCountMethod), mesmo que não for utiliza-los no SelectCountMethod

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.