在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();
在此代码之后,我加载所有数据并显示图表。这有效,但我希望它以Spline图形开始。这可以通过使用图表上方的图表控件加载后轻松完成,只需选择样条曲线类型,但我无法使用此设置加载图表。
如果我尝试使用Graphics.parmSeriesType(#line); (或#pie或其他) 我的代码中没有出错,但是当我运行它时出现错误:
无法获得Null。
我已尝试使用其中几个宏,但除非我使用#series_point,否则它们都会产生相同的错误。我也试过从1-25插入常规的整数以查看是否有效,但它们给了我同样的错误。
知道为什么会这样吗?
答案 0 :(得分:3)
我查看了Graphics
类和ChartFX
宏,找到了列样式的设置方式和位置。要设置自己的图表样式并按照AX中的当前模式,请尝试以下操作:
通过搜索此列表找到SeriesChartType
枚举整数值:http://msdn.microsoft.com/en-us/library/system.windows.forms.datavisualization.charting.seriescharttype.aspx(此列表按顺序排列,并且从0开始。样条曲线为枚举值4)。
在ChartFX
#DEFINE.SERIES_SPLINE(4)
中为此值创建一个宏。这样的三个值(对于Point,Bar和Column)已经在ChartFX
宏中定义。
修改classDeclaration
类的Graphics
以添加另一个宏:#DEFINE.SeriesChartTypeEnum_Spline("Spline")
修改setChartType
类的Graphics
方法。在方法中存在的当前if
语句之后,添加以下内容:
else if (seriesType == #SERIES_SPLINE)
{
newChartType = ClrInterop::parseClrEnum(#SeriesChartTypeEnum, #SeriesChartTypeEnum_Spline);
}
现在,您可以返回原始代码示例,代替Graphics.parmSeriesType(#line);
,放置Graphics.parmSeriesType(#SERIES_SPLINE);