locked
Componente para Gráficos RRS feed

  • Pergunta

  • Bom pessoal,

    Utilizo o amCharts para criar gráficos no WP mas agora está acontecendo um erro que, realmente, não entendo.

    Faço toda a construção no XAML, crio as classes no C# e funciona na primeira passagem, porém, quando atribuo ao DataSource um novo valor, ocorre  NullException. Já depurei e não existe nenhum valor nulo atribuído ao chart.

    O problema ocorre quando a nova pesquisa retorna um número menor de registros em relação à pesquisa anterior. Como se o componente mantivesse a estrutura antiga e ficasse esperando preencher com o mesmo número de registros. Simplesmente não trabalha igual ao ListBox ou ListPicker.

    Vou passar os trechos de código abaixo para desencargo. Se alguém souber de algo específico deste componente ou se há outro gratuito que eu possa utilizar, ficarei grato.

    XAML (não estranhem, pois realmente não permite o uso do Binding)

    <amq:PieChart x:Name="chartResumo" 
       TitleMemberPath="ResumoCategoria" 
       ValueMemberPath="ResumoSoma"
       Height="500">
    </amq:PieChart>

    C#

    chartResumo.DataSource = new ListaResumo(iMesAdicional);

    Classe

            public class ListaResumo : List<clsListaResumoBinding>
            {
                public ListaResumo(Int32 iMesAdicional)
                {
                    using (FingersOnFinanceContext ctx = new FingersOnFinanceContext(sConn))
                    {
                        DateTime dPrimeiroDiaMes = new DateTime(DateTime.Today.AddMonths(iMesAdicional - 1).Year, DateTime.Today.AddMonths(iMesAdicional - 1).Month, 1, 0, 0, 0);
                        DateTime dUltimoDiaMes = dPrimeiroDiaMes.AddMonths(1).AddDays(-1).AddHours(23).AddMinutes(59).AddSeconds(59);
    
                        var query = from x in ctx.FOFkLancamentos
                                    where x.FOFkCategoriaDespesa.CatStatus != 9
                                    && x.FOFkCategoriaDespesa.CatStatus != 10
                                    && x.LctDataPagamento >= dPrimeiroDiaMes
                                    && x.LctDataPagamento <= dUltimoDiaMes
                                    && x.FOFkCategoriaDespesa.CatTipo == "D"
                                    group x by x.FOFkCategoriaDespesa.CatDescricao into grupo
                                    orderby grupo.Sum(s => s.LctValor) descending
                                    select new { Categoria = grupo.Key, GrupoTotal = grupo.Sum(s => s.LctValor) };
    
                        foreach (var l in query)
                        {
                            Add(new clsListaResumoBinding
                            {
                                ResumoCategoria = l.Categoria,
                                ResumoSoma = Convert.ToDouble(l.GrupoTotal)
                            });
                        }
                    }
                }
            }
    
    
    public class clsListaResumoBinding
        {
            public string ResumoCategoria { get; set; }
            public double ResumoSoma { get; set; }
        }

    Novamente... As pesquisas no banco de dados estão corretas. O problema acontece quando o gráfico foi construído anteriormente com mais registros do que a nova pesquisa.

    O componente está no NuGet...


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    sexta-feira, 29 de novembro de 2013 04:22

Respostas

  • Obrigado Rogério.

    Eu vou tentar fazer com gráfico de barras, mas é pena porque o pizza ilustra muito melhor o que eu estou querendo mostrar para p usuário, além do que, vinha funcionando perfeitamente...


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    sexta-feira, 29 de novembro de 2013 18:37
  • Obrigado Rogério.

    Eu vou tentar fazer com gráfico de barras, mas é pena porque o pizza ilustra muito melhor o que eu estou querendo mostrar para p usuário, além do que, vinha funcionando perfeitamente...


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    Bom pessoal, infelizmente o amChart realmente tem problemas, principalmente no gráfico pizza. Meu aplicativo ficou por muito tempo funcionando sem que eu conseguisse repetir esta situação que ocasiona em erro.

    O problema ocorre quando a nova pesquisa retorna um número menor de registros em relação à pesquisa anterior. Como se o componente mantivesse a estrutura antiga e ficasse esperando preencher com o mesmo número de registros. Simplesmente não trabalha igual ao ListBox ou ListPicker.

    Sendo assim, substitui pelo gráfico de colunas que não ilustra tão bem quanto o pizza, mas acredito que migrar para um controle pago seja a melhor alternativa.


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    sexta-feira, 6 de dezembro de 2013 20:17

Todas as Respostas

  • Eu uso esse componente do AMChart no meu App Finanças e sinceramente eu não consegui usar o gráfico de pizza, pois tive também alguns problemas, já o gráfico de barras foi tranquilo. Se quiser eu posso te mandar a dll que tenho e você testa se vai funcionar.


    Paulo Rogério

    sexta-feira, 29 de novembro de 2013 15:46
  • Obrigado Rogério.

    Eu vou tentar fazer com gráfico de barras, mas é pena porque o pizza ilustra muito melhor o que eu estou querendo mostrar para p usuário, além do que, vinha funcionando perfeitamente...


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    sexta-feira, 29 de novembro de 2013 18:37
  • Obrigado Rogério.

    Eu vou tentar fazer com gráfico de barras, mas é pena porque o pizza ilustra muito melhor o que eu estou querendo mostrar para p usuário, além do que, vinha funcionando perfeitamente...


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    Bom pessoal, infelizmente o amChart realmente tem problemas, principalmente no gráfico pizza. Meu aplicativo ficou por muito tempo funcionando sem que eu conseguisse repetir esta situação que ocasiona em erro.

    O problema ocorre quando a nova pesquisa retorna um número menor de registros em relação à pesquisa anterior. Como se o componente mantivesse a estrutura antiga e ficasse esperando preencher com o mesmo número de registros. Simplesmente não trabalha igual ao ListBox ou ListPicker.

    Sendo assim, substitui pelo gráfico de colunas que não ilustra tão bem quanto o pizza, mas acredito que migrar para um controle pago seja a melhor alternativa.


    Andrey Kurka (MCC) | Federal Case | @federalcaseinfo

    sexta-feira, 6 de dezembro de 2013 20:17