3

在 Ax2012 中使用图表,我工作正常。但是我想更改它在启动时显示的图形类型,例如“样条”图表,而不是默认的“列”图表。

这就是我现在拥有的:http: //i.stack.imgur.com/RyR9v.png

这就是我想要的:http: //i.stack.imgur.com/4cIIO.png

这是我的一些基本代码:

Graphics    graphics;
Microsoft.Dynamics.AX.Framework.Client.Controls.ChartToolBar chartToolbarControl1;
#MACROLIB.ChartFx
;

chartToolbarControl1 = chartToolbarControlHostChart.control();
chartToolbarControl1.set_ChartControl(Chart.control());

graphics = new graphics();
graphics.ManagedHostToControl(Chart);

graphics.parmCreateType(#ct_cluster| #cT_tool);
Graphics.parmSeriesType(#line);

graphics.create();

在此代码之后,我加载所有数据并显示图表。这可行,但我希望它以样条图的形式开始。这可以在加载后通过使用图表上方的图表控件并选择样条类型轻松完成,但我无法使用此设置加载图表。

如果我尝试使用 Graphics.parmSeriesType(#line); (或#pie 或其他)我的代码中没有错误,但是当我运行它时,我得到了错误:

无法获得空值。

我已经尝试过使用其中的几个宏,但它们都会产生相同的错误,除非我使用#series_point。我也尝试只插入 1-25 的常规整数,看看这是否有效,但它们给了我同样的错误。

知道为什么会这样吗?

4

1 回答 1

3

我查看了Graphics类和ChartFX宏,发现了列样式的设置方式和位置。要设置您自己的图表样式并遵循 AX 中的当前模式,请尝试以下操作:

  1. 通过搜索此列表查找SeriesChartType枚举整数值:http: //msdn.microsoft.com/en-us/library/system.windows.forms.datavisualization.charting.seriescharttype.aspx(此列表按顺序排列,为 0-基于。样条是枚举值 4)。

  2. ChartFX在like中为此值创建一个宏#DEFINE.SERIES_SPLINE(4)ChartFX宏中已经定义了像这样的三个值(用于点、条形和柱形) 。

  3. 修改classDeclaration类的Graphics以添加另一个宏:#DEFINE.SeriesChartTypeEnum_Spline("Spline")

  4. 修改类的setChartType方法Graphics。在方法中存在的当前if语句之后,添加以下内容:

    else if (seriesType == #SERIES_SPLINE)
    {
        newChartType = ClrInterop::parseClrEnum(#SeriesChartTypeEnum, #SeriesChartTypeEnum_Spline);
    }
    
  5. 现在你可以回到你原来的代码示例,代替Graphics.parmSeriesType(#line);, 把Graphics.parmSeriesType(#SERIES_SPLINE);

于 2012-11-15T16:16:27.350 回答