Проблемы с AspxPivotGrid и WebCharControl - PullRequest
0 голосов
/ 02 июня 2011

У меня есть два вопроса / проблемы относительно AspxPivotGrid.

Когда я использую окно настройки и добавляю столбцы в «Область строк» ​​и «Область данных» и обновляю отчет.Сетка генерирует правильно, но график не генерирует.Однако, когда вы добавляете поле в «Область столбцов», график генерирует.

Похоже, что график генерируется, только когда указан хотя бы один столбец, даже если заголовки «Область данных» точноданные нам нужны.Я смоделировал это с графической демонстрацией, которую вы имеете на своем сайте.Это ожидаемое поведение?

Во-вторых, когда я добавляю DateTime к 'Row Area' и String 'Column Area', это нормально.Затем я поменяю местами колонны, опять же, с опорой все в порядке.Снова переключив его, вы получите следующую ошибку:

System.ArgumentException: The type of the "Arguments" argument data member isn't compatible with the date-time scale.

at DevExpress.XtraCharts.SeriesBase.CheckArgumentDataMember(Object dataSource, String dataMember, ScaleType argumentScaleType)

Любые предложения / решения?

Ответы [ 2 ]

1 голос
/ 10 июня 2011

Если у вас есть поля в «Области строк» ​​и «Области данных», но нет в «Области столбцов», в сетке отображаются общие итоги столбцов.Вы можете отобразить их на графике, установив свойство ShowColumnGrandTotals, например:

ASPxPivotGrid1.OptionsChartDataSource.ShowColumnGrandTotals = True

Значение по умолчанию, не показывающее общие итоги, понятно, так как большинство диаграмм показывают либо:

  • агрегированные значения, сгруппированные по полю строки или столбца, но без общих итогов, или
  • только общие итоговые значения из строк или столбцов.
0 голосов
/ 25 апреля 2013

У меня были те же ошибки:

Тип элемента данных аргумента «Аргументы» не совместим с числовой шкалой

Тип «Аргументы»элемент данных аргумента несовместим с масштабом даты и времени

Это происходило, когда пользователь изменял строки по столбцам или наоборот в сводной сетке.Чтобы обойти эту проблему, я попробовал этот код, и он работает для меня:

        //Always make the chart visible then perform DataBind() //Sempre deixar o gráfico visivel e depois executar o método DataBind()
        try
        {
            dxGrafico.Visible = true;
            dxGrafico.RefreshData();
            dxGrafico.DataBind();
        }
        catch (Exception ex)
        {
            //Try to fix the error: The type of the "Arguments" argument data member isn't compatible with the <data type> scale //Tentar corrigir o Erro
            bool bTeste = false;
            bTeste = Ajuste_Grafico_ScaleType(ex);

            //If not fix the argument scale type, then show error message label //Se não conseguir corrigir , acrescenta um label com texto da mensagem de erro
            if (!bTeste)
            {
                //Make the chart not visible and Add a label on the Page Control that the owners the chart //Deixar o gráfico invisível e exibir o label com mensagem no objeto PageControl que contém o gráfico
                dxGrafico.Visible = false;
                try
                {
                    //Error Message (Mensagem de Erro)    
                    ASPxLabel lbl = new ASPxLabel();
                    lbl.ID = "lblMensagemErroGrafico";
                    lbl.Text += "\n\n" + "ATENÇÃO: Não Foi possível Processar o Gráfico" + "";
                    lbl.Text += "\n\n" + "Tente utilizar outro tipo de Gráfico" + "";
                    lbl.Text += "\n\n" + ex.Message + ""; //lbl.Text += "\n\n" + ex.ToString() + "";
                    this.pgControl.TabPages[1].Controls.Add(lbl);
                }
                catch (Exception ex1) { }
            }

        }

    //method Try to fix the error 
    private bool Ajuste_Grafico_ScaleType(Exception exOrigem)
    {
        //Try to fix error argument ArgumentScaleType (Tenta ajustar erro)
        bool saida = false;

        try
        {

            //Auto
            try
            {
                dxGrafico.SeriesTemplate.ArgumentScaleType = ScaleType.Auto;
                dxGrafico.DataBind();
                dxGrafico.SeriesTemplate.ValueScaleType = ScaleType.Auto;
                dxGrafico.DataBind();
                saida = true;
                return saida;
            }
            catch (Exception e) { }

            //Numeric
            try
            {
                int n = exOrigem.Message.ToString().IndexOf("Numeric", 0, StringComparison.OrdinalIgnoreCase);
                if (n >= 0)
                {
                    dxGrafico.SeriesTemplate.ArgumentScaleType = ScaleType.DateTime;
                    dxGrafico.DataBind();
                    dxGrafico.SeriesTemplate.ValueScaleType = ScaleType.DateTime;
                    dxGrafico.DataBind();
                    saida = true;
                    return saida;
                }
            }
            catch (Exception e) { }


            //Date Time
            try
            {
                int n = exOrigem.Message.ToString().IndexOf("Date", 0, StringComparison.OrdinalIgnoreCase);
                if (n >= 0)
                {
                    dxGrafico.SeriesTemplate.ArgumentScaleType = ScaleType.Numerical;
                    dxGrafico.DataBind();
                    dxGrafico.SeriesTemplate.ValueScaleType = ScaleType.Numerical;
                    dxGrafico.DataBind();
                    saida = true;
                    return saida;
                }
            }
            catch (Exception e) { }

        }
        finally
        {

        }

        return false;
    }

Он работает для большинства типов диаграмм, но с FullStakedLine произошла другая ошибка, не связанная здесь.

...