locked
Silverlight 4 - DataGrid não renderiza com um certo número de colunas RRS feed

  • Pergunta

  • Faala Galera,

     

    me pediram para criar uma POC para uma tela sinistra, onde no pior do casos terei um Grid de 500x500 com colunas editáveis. Na mesma hora falei que o desempenho seria horrível e tentei convencer o cliente para tentarmos reduzir a quantidade de colunas, porém sem êxito. (Cliente viciado no Excel)

    Sendo assim coloquei mãos na massa e comecei alguns testes, segue a descrição de alguns testes que fiz:

     

      1º - ASP.NET 4 e GridView - Como eu queria mostrar que o desempenho não seria bom criei a primeira POC utilizando ASP.NET 4.0 com GridView, como era de se esperar a POC ficou com um péssimo desempenho, quase dois minutos para renderizar o Grid.

      2° - ASP.NET 4 com jQuery – Criei um webMethod que me retornava os dados e eu renderizava os mesmos como table (TD e TR), ao clicar em uma célula eu injetava um input na célula para simular a edição do grid). Ótimo desempenho, porém teria que tratar isso no lado do servidor para poder salvar no banco.

      3º - Utilizei o Grid do DevExpress – Ficou legal, porém com um desempenho médio e a edição inline não estava muito legal, pois ao clicar em uma célula o grid exibia um “Loading” e demorava um pouco para habilitar a edição da célula. 22 segundos para renderização do Grid.

      4º - Utilizei o Grid do Infragistics – A edição inline ficou muito boa, porém o desempenho perto do DexExpress foi muito pior, quase 1 minuto a mais.

      5º - Silverlight 4 – Como gosto muito do Silverlight e já tive outras experiências com o mesmo, resolvi criar a POC no mesmo, porém me deparei com um problema. O exemplo em anexo está funcionando, da forma que o cliente pediu, 2 colunas fixas e edição inline para os dados, o Binding está funcionando perfeitamente, respondendo com cerca de 18 segundos, só que, resolvi fazer um teste com 300x300 para ver o desempenho e o Grid não renderizou.

     

    Para tentar resolver o problema fiz algumas alterações na POC, quebrando o conceito do MVVM, porém não obtive sucesso, o problema persiste e não consegui resolver, cheguei a migrar essa POC para o Silverght 5 só para debugar o Binding que está sendo feito no XAML da Lista que popula o Grid, e vi que a lista está chegando perfeita, toda populada, porém o grid não exibe os dados.

     

    Descobri que o problema ocorre quando coloco um range de valores para as colunas, independente da quantidade de linhas, ou seja e eu informa a quantidade de colunas entre 248 e 498, o problema acontece e fora desse range o grid é renderizado perfeitamente, inclusive se eu colocar 1000 colunas.

     

    Acredito que o problema esteja acontecendo com o DataGrid do Silverlight.

     

    Será que alguém poderia me ajudar???

     

    Link contendo o post original com o download da solução utilizada na POC

    http://silverlight.codeplex.com/workitem/9537

     



    []s, Pierre Assis Noronha


    quinta-feira, 22 de setembro de 2011 13:20

Todas as Respostas

  • Olá Pierre,

    Estou com uma ideia. Você já tento pesquisar um DataGrid customizado para esta situação ? Atraves de herança e override.

    Tivemos um problema com o combobox nativo do silverlight e extendemos criando um novo tipo para realizar busca de primeira letra por click no teclado, por exemplo.

    No seu caso pode haver algum metodo anterior a renderização do Grid. Só uma ideia!


    Ygor Thomaz aka CtrlC
    WebSite: http://www.ygorthomaz.com/ | Twitter: @ygorthomaz
    "With Great Power Comes Great Responsibility." Uncle Ben, Spiderman

    quinta-feira, 29 de setembro de 2011 02:59