AspxPivotGrid和WebCharControl问题

时间:2011-06-02 05:17:41

标签: asp.net devexpress webchartcontrol

我有两个关于AspxPivotGrid的问题/问题。

当我使用自定义窗口并在“行区域”和“数据区域”中添加列并更新报告时。网格生成正常但图形不生成。但是,当您在“列区域”中添加字段时,图表会生成。

图表似乎只在指定了至少一列时生成,即使“数据区”标题正是我们需要的数据。我已经使用您网站上的图形演示模拟了这一点。这是预期的行为吗?

其次,当我在“行区域”和字符串“列区域”中添加DateTime时,它很好。然后我交换了列,再次枢轴是好的。再次将其切换回来会出现以下错误:

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 个答案:

答案 0 :(得分:1)

如果“行区域”和“数据区域”中有字段,但“列区域”中没有字段,则网格显示列总计。您可以通过设置ShowColumnGrandTotals属性(例如:

)在图表中显示这些内容
ASPxPivotGrid1.OptionsChartDataSource.ShowColumnGrandTotals = True

不显示总计的默认值是可以理解的,因为大多数图表都显示:

  • 按行或分组的聚合值 列字段,但没有总计,或
  • 仅来自行或的总计值 列。

答案 1 :(得分:0)

我遇到了同样的错误:

  

“Arguments”参数数据成员的类型与数字刻度

不兼容      

“Arguments”参数数据成员的类型与日期时间刻度

不兼容

当用户在透视网格中按列更改行或反之亦然时,会发生这种情况。要解决此问题,我尝试了此代码,它适用于我:

        //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发生了另一个与此无关的错误。