我有两个关于AspxPivotGrid
的问题。
当我使用自定义窗口并在"行区域"one_answers"数据区域"中添加列并更新报告时。网格生成正确,但图形不生成。但是,当您在"列区域"中添加字段时,图形就会生成。
似乎只有当至少指定了一列时,图才会生成,即使"数据区域"标头正是我们需要的数据。我已经用你网站上的图形演示来模拟了这一点。这是预期的行为吗?
其次,当我将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)
有什么建议/解决方案吗?
如果在"行区域"one_answers"数据区域"中有字段,但在"列区域"中没有字段,则网格将显示列总计。您可以通过设置ShowColumnGrandTotals
属性在图表中显示这些内容,例如:
ASPxPivotGrid1.OptionsChartDataSource.ShowColumnGrandTotals = True
不显示总计的默认值是可以理解的,因为大多数图表都显示以下两者之一:
- 按行分组的聚合值或列字段,但没有总计,或
- 仅来自行或列
我也有同样的错误:
";论点"参数数据成员与数字刻度不兼容
";论点"参数数据成员与日期时间刻度不兼容
当用户按列更改数据透视网格中的行或按列更改时,就会发生这种情况。为了解决这个问题,我尝试了这个代码,它对我有效:
//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 += "nn" + "ATENÇÃO: Não Foi possível Processar o Gráfico" + "";
lbl.Text += "nn" + "Tente utilizar outro tipo de Gráfico" + "";
lbl.Text += "nn" + ex.Message + ""; //lbl.Text += "nn" + 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
发生了另一个与此无关的错误。