Pergunta

Eu tenho algumas tabelas no meu banco de dados com cerca de 7K linhas e eu preciso fazer um relatório sobre o web site (asp.net) com formatação personalizada, tabela dinâmica como detalhes.

O que é a melhor solução para isso, porque quando eu processar por exemplo repetidor com esta quantidade de dados it`s muito lento.

Obrigado por conselhos

Foi útil?

Solução

Se você não quer paginação, então você provavelmente vai precisar de algum AJAX para buscar linhas como você rolar e, possivelmente, remover linhas como eles deslocar para fora de vista, se você precisa de memória conserva.

Outras dicas

Desligue o viewstate

A menos que você precisar dele

Page.EnableViewState = false;

Split da mesa

Se você não quiser ir abaixo da rota de paginação você também pode tentar dividir um grande <table> em várias <table>s menores. (Ela costumava ser o caso que o navegador só poderia tornar uma tabela depois de ter visto o </table> final. Eu não sei se isso ainda é verdade, mas definitivamente um tiro pena sou)

Se livrar do lixo

Certifique-se de que você está usando css e não usar coisas como

<td width="40" valign="top"> 50 </td>
<td class="a"> 50 </td> <!-- better  -->
<td>50</td> <!-- best  -->
<!-- if you need to specify a width, you only need to do it in one row  -->

Lembre-se crap * 7000 = alot of crap

Reduzir o tamanho da página a todo custo

Às vezes o problema não está prestando da página, mas é o download que causa o problema, de modo a verificar isso.

As tabelas aninhadas vai realmente feri-lo

Nuff disse

Gostaria de sugerir o uso de paginação.

Considerando uma linha típica como esta:

<tr><td>ID</td><td>Some data</td><td>More and more data</td></tr>

Cada linha tem 66 personagens, assim que ter 7k linhas resumiria quase 500k no valor de dados. E isso é muito para uma exibição na web.

Então, se você realmente deseja tudo de exibição em uma página, mantê-la mínima:

  • Não desperdice espaços
  • atributos não use a menos que completamente inevitável
  • Não use class = "" Se você não tem classes diferentes para diferentes linhas (aplicar a mesma classe para todas as linhas em vez)

De qualquer forma, dependendo alvo computador + o navegador, isso pode ficar realmente slooow se suas linhas são maiores.

Você não menciona qual a linguagem que você está usando, mas a menção de um repetidor sugere ASP.Net? Na minha experiência, a ligação de dados a um DataGrid é mais rápido em conjuntos de dados maiores.

Mas, eu tenho que perguntar por que você iria querer mostrar a parte de dados em uma página da web. Nenhum usuário em seu perfeito juízo iria sentar e percorrer que muitos dados e achar que é útil. Limitar os seus dados para dados pertinentes que serão úteis para o usuário -. Geralmente filtradas para menos de 100 linhas

IMO, um relatório com esta quantidade de dados é inútil, não importa o formato, mas se você absolutamente tem que ter tudo para um relatório impresso ou tal, considere gerar um documento PDF no servidor em vez.

pode querer tentar uma ferramenta de relatório personalizado para que a quantidade de dados. Minha empresa fazer uma ferramenta chamada RSinteract (plug descarado). Esse relatório usa SQL Server serviços.

Se você quiser apenas para despejar os dados. Eu presumo que o navegador está travando ao mesmo tempo que torna isso ou enquanto a consulta está sendo executado. Se você sabe qual é o seu navegador de destino ... você poderia usar um link "More ..." para obter o próximo conjunto de dados e tem um limite de 1.000 linha. No entanto, esta teria um impacto Ctrl + F procura. Semelhante a paginação, mas colocar a responsabilidade nas mãos do usuário, eu acho.

Se você está realmente procurando a solução "melhor" para uma "aplicação web", eu descaradamente sugerimos que você use Flash / Flex para a prestação eficiente que muitas linhas. Se estiver usando nada além de HTML básico não é uma opção, então eu sugiro buscar dinamicamente novas linhas como o usuário rola como @mbeckish sugeridas ...

Eu costumava grades DevExpress para um cliente para lidar com relatórios e eles adoram (embora eu teria sim ter rolado meu próprio!)

Consulte http://demos.devexpress.com/ASPxGridViewDemos/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top