本指南演示了如何创建绑定到数据的图表,以便于根据公共 系列模板 自动创建所有系列,系列模板为所有系列指定了通用选项。 当所有系列的数据 (系列名称及系列点的参数和取值) 都被存储在相同的 数据表 中时, 这是可行的。
注意,在这种情况下,所有系列的 视图类型 和某些其他设置都是相同的。
在本例中,我们把图表绑定到 Gsp 数据库 (与 XtraCharts 套件安装一起提供的 gsp.mdb 文件) 中的 "GSP" 表。 该表包含某些 US 地区的 Gross State Product (GSP) 统计数据。
要使用系列模板把图表绑定到数据,则执行下列操作。
创建数据对象并绑定到 ChartControl
-
启动 MS Visual Studio (2005、2008 或 2010),并新建一个或者打开一个现有的 Windows 窗体应用程序。
-
要把 ChartControl 停靠在父窗体中,则可以把它的 Dock 属性设置为 Fill。
注意,在放落图表控件之后,图表向导 可能会被调用 (如果启用了向导的“Display a wizard every time a new chart is added[当添加新图表时显示向导]”选项)。 在本例中,我们不需要使用向导,因此单击 取消(Cancel) 按钮来关闭向导窗口。
-
为了创建图表的数据源,选中它并单击它的智能标记。 在被调用的操作列表中,展开 Data Source(数据源) 下拉列表选取器,并单击 Add Project Data Source(添加项目数据源)... 链接。
然后,继续完成下列通过调用“数据源配置向导”产生的步骤。
-
在第一步中,选择 Database(数据库) 图标,并单击 Next(下一步) 按钮。
-
然后,指定 GSP 数据库。 如果它没有出现在下拉列表中,就单击 New Connection(新建连接)... 按钮,并指定 MDB 文件的路径。
单击 Next(下一步) 按钮继续。
-
在接下来的页面中,会询问您是否把所创建的连接字符串保存到项目的配置文件中。
保持默认的设置,并单击 Next(下一步) 按钮。
-
在最后的页面中,允许您选择要从数据库中获取数据的表。
选中 "GSP" 表,并单击 Finish(完成) 按钮。
在执行上述步骤之后,Visual Studio 将生成一组支持 ADO.NET 体系结构的类,一些类被自动指派到图表控件的适当属性。 特别是:
- gspDataSet 表示一个 DataSet 对象 (可能相互关联的表的一个集合),其中包含了 gspDataTable;
- gSPBindingSource 表示一个 System.Windows.Forms.BindingSource 组件 (在图表的数据集中提供数据),被自动指派到 ChartControl.DataSource 属性;
- gSPTableAdapter 表示一个 TableAdapter 对象 (包含获取和回传数据库中指定表的数据的方法),被自动指派到 ChartControl.DataAdapter 属性。
这意味着已经成功地把图表绑定到数据源。 下面的步骤说明了如何把数据字段指派到图表的系列模板。
指定系列数据成员并调整系列模板
-
现在,我们把一个数据字段,指定到多个 (与此字段中的记录数目相同) 自动创建的系列。 在本例中,这是通过把 ChartControl.SeriesDataMember 属性设置为 Year 来实现的。
注意,这些系列的名称 (出现在 图例 中) 将与此字段的值相符。
-
现在,通过图表的 ChartControl.SeriesTemplate 属性来访问并调整系列模板。
特别是,必须指定那些用于获取系列 arguments(参数) 和 values(值) 信息的数据字段。
因此,把 SeriesBase.ArgumentDataMember 属性设置为 Region,…
... 把 SeriesBase.ValueDataMembers 集合中的唯一成员的取值设置为 GSP。
注意,某些系列 视图类型 可能需要为每个参数指定一个以上取值 (例如 Stock(股价) 或 Bubble(气泡) 系列)。 在这种情况下,应该为 SeriesBase.ValueDataMembers 集合指定多个数据成员。
现在,图表拥有了有关数据源和数据成员的完整信息。 但是,仍然没有在设计时刻显示真正的数据。 要为图表填充真正的数据,则单击图表的智能标记,并单击 Populate(填充) 项。
在运行时刻填充数据 (可选)
注意,Visual Studio 自动把下列代码添加到窗体的 Load 事件中,通常不需要人工添加。
-
要使用数据库中的数据填充 DataTable 对象,则可以使用相应的 TableAdapter 的 Fill 方法。 在本例中,使用 gSPTableAdapter 对象的 Fill 方法来填充图表的 DataTable 数据。 窗体的 Load 事件被用于处理数据加载。
C# 复制代码 private void Form1_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the 'gspDataSet.GSP' table. // You can move, or remove it, as needed. this.gSPTableAdapter.Fill(this.gspDataSet.GSP); }
Visual Basic 复制代码 Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' TODO: This line of code loads data into the 'gspDataSet.GSP' table. ' You can move or remove it as needed. Me.gSPTableAdapter.Fill(Me.gspDataSet.GSP) End Sub
定制图表
最后,可以指定可选的属性设置,这些设置将被应用于所有自动创建的系列。
-
调整系列名称模板
在默认情况下,从适当的数据字段获取每个自动创建的系列的名称 (出现在 图例 中)。 但是,也可能需要添加一些前缀或后缀到这些名称,这可以通过 SeriesNameTemplate.BeginText 和 SeriesNameTemplate.EndText 属性来完成。
或者,当需要使用自定义名称来完全替代自动指定的名称时,可以在 ChartControl.CustomDrawSeries 事件中指定 CustomDrawSeriesEventArgs.LegendText 属性,从而完成此任务。 相关的代码示例,请参阅 如何: 改变自动创建系列的名称。
-
定制轴标签
因为 X-轴标签 (在本例中显示了 US 地区名) 可能会重叠,因此为了避免产生该问题,可以选中 X-轴 (也可以通过 ChartControl.Diagram.AxisX 属性来访问),并把它的 AxisLabel.Staggered 属性设置为 true。
-
其他任务
要为 系列点标签 启用重叠解决算法,则使用 SeriesLabelBase.ResolveOverlappingMode 属性。
或者,要简单隐藏所有系列的点标签,则把 SeriesTemplate.Label.Visible 属性设置为 false。
要为系列点指定颜色,则使用 ChartControl.PaletteBaseColorNumber、ChartControl.PaletteName 和 ChartControl.AppearanceName 属性。 要获得更多相关信息,请参阅 外观定制。
查看运行结果
运行项目,并查看结果。