本文档阐述了如何根据模板自动创建系列。 要了解其他可选的方式,请参阅 人工创建系列 和 指定系列的数据成员。
本文档由下列小节组成:
为自动创建系列指定模板
对于创建系列并提供系列数据,当系列数目未知或者太多时,最常用的标准方式是在自动创建和填充系列的基础之上,确定一个典型的方案。
使用 ChartControl.SeriesTemplate 属性来访问被用作自动创建系列的模板的对象。
当把数据源指派到 ChartControl.DataSource 属性时,通过 ChartControl.SeriesDataMember 属性指定数据列的名称,将根据该数据列新建系列并命名。
然后,通过 ChartControl.SeriesTemplate 属性,来把所需的数据字段指派到 SeriesBase.ArgumentDataMember 和 SeriesBase.ValueDataMembers 属性。 这些属性确定了数据字段的名称,从这些数据字段中获取自动创建系列的点参数和取值。 注意,对于某些视图类型 (例如 气泡图 或 股价图),每个系列点的多个取值是必要的,因此,在这些情况下,应该把数据字段指派到每个取值水平。
就像人工创建的系列那样,为自动创建系列的参数和取值指定适当的刻度类型是非常关键的。 通过 SeriesBase.ArgumentScaleType 和 SeriesBase.ValueScaleType 属性来指定。 对于自动创建的系列,这些属性位于 ChartControl.SeriesTemplate 属性中。 应该根据所需要呈现系列的数据类型,适当指定它们的取值,这是因为它们的默认值 (分别为 Qualitative 和 Numeric) 可能不符合要求。 这样,例如,如果数据点有 日期时间 值,那么将被解释为字符串,因此就不能应用多个有用的选项。 要学习更多相关内容,请参阅 系列的刻度类型。
要学习更多关于定制系列模板的内容,请参阅本文档的下一小节 (获得并定制自动创建的系列)。
获得并定制自动创建的系列
使用系列模板的 SeriesBase.View 属性来为自动创建的系列指定一种 公共的 视图类型。 注意,在设计时刻不可能为自动创建的系列确定一个自定义视图类型。 在运行时刻,则可以在 ChartControl.BoundDataChanged (WebChartControl.BoundDataChanged) 事件处理程序中完成此任务。 要学习更多相关内容,请参阅 如何: 分别改变自动创建系列的视图类型。
此外,通过 ChartControl.SeriesTemplate 属性指定的任何自定义设置,都不会被应用于包含在图表控件的 ChartControl.Series 集合中的系列。 这些设置只对自动创建的系列有用。 因此,使用这种视图类型,就不能在设计时刻取回和定制各个自动创建的系列。
在运行时刻,要分别定制这些系列,则可以在图表控件的 ChartControl.BoundDataChanged 特殊事件中访问它们。 下面的示例演示了如何把 辅助轴 指派到自动创建的系列。
C# | 复制代码 |
---|---|
private void chartControl1_BoundDataChanged(object sender, EventArgs e) { for (int i = 0; i < chartControl1.Series.Count; i++) { ((BarSeriesView)chartControl1.Series[i].View).AxisY = ((XYDiagram)chartControl1.Diagram).SecondaryAxesY[0]; } } |
Visual Basic | 复制代码 |
---|---|
Private Sub chartControl1_BoundDataChanged(ByVal sender As Object, ByVal e As EventArgs) _ Handles chartControl1.BoundDataChanged For i As Integer = 0 To chartControl1.Series.Count - 1 CType(chartControl1.Series(i).View, BarSeriesView).AxisY = _ (CType(chartControl1.Diagram, XYDiagram)).SecondaryAxesY(0) Next i End Sub |
事实上,通过 ChartControl.SeriesTemplate 属性,可以访问和定制与人工创建的系列相同的选项。 要在运行时刻访问这些设置,则使用下列代码。
C# | 复制代码 |
---|---|
// Access labels of series maintained in the chart's collection. chart.Series[0].Label.Visible = true; // Access labels of auto-created series. chart.SeriesTemplate.Label.Visible = true; |
Visual Basic | 复制代码 |
---|---|
' Access labels of series maintained in the chart's collection. chart.Series(0).Label.Visible = True ' Access labels of auto-created series. chart.SeriesTemplate.Label.Visible = True |
在下列文档中详细说明了可用的选项: 指定系列的数据成员 (在其中的 定制系列 部分)。
下面说明了自动创建系列特有的选项。
对于自动创建的系列,一个有用的可用选项,是通过 ChartControl.SeriesNameTemplate 属性,把系列名称封闭在特定的文本之中 (前缀或后缀)。 在 属性 窗口中,展开此属性,来访问 SeriesNameTemplate.BeginText 和 SeriesNameTemplate.EndText 属性。
注意,通过系列名称模板可用的设置,不会被应用于包含在图表控件的 ChartControl.Series 集合中的数据绑定系列。
对于自动创建的系列,可以根据动态创建的 系列名称 (是从 ChartControl.SeriesDataMember 属性指定的数据字段中获得的),来指定在图表控件中自动生成系列对象的排序方式。 因此,对于自动创建的系列,要在升序和降序排序顺序之间切换,则使用 ChartControl.SeriesSorting 属性。 更多信息,请参阅 对数据排序。