使用 Microsoft OWC 的图表自定义控件






2.43/5 (16投票s)
2004年9月10日
3分钟阅读

160929

1897
这是一个使用 Office Web Component 技术的基于 Web 的图表 .NET 自定义控件。
引言
市场上有相当多的商业或免费图表控件。然而,大多数图表要求都以 Microsoft Excel 图表的形式呈现。换句话说,如果我们能够利用 MS OWC(Office Web Component)提供的丰富功能,包括 office 图表支持,我们就可以在网页中呈现 Microsoft Office 图表。
通过使用 MS OWC 技术,基本上有两种方法来实现图表控件,即服务器驱动和客户端驱动。服务器驱动的方法是在服务器端使用 OWC COM 类通过 .NET 互操作来呈现图表。另一种方法是使用 OWC ActiveX 对象。第二种方法需要在客户端支持 Office OWC,因此会产生许可证问题。在这个 ChartFactory
自定义控件中,采用了服务器驱动模型。至于如何在服务器端安装 OWC 许可证,请参考 Microsoft 网站。
使用代码
步骤 1:添加控件引用
要使用自定义控件,您可以从 VS.NET IDE 的工具箱栏中包含该程序集(添加/删除项 -> 找到该程序集 -> 确定)。完成后,您可以将该控件拖放到任何 ASPX 页面或 ASCX 页面中的 ASP.NET 窗体中。
步骤 2:准备图表数据
为了呈现图表,您必须首先填充 DataSet
,这是 ChartFactory.AddChartData
方法所必需的。 DataSet
实例只能有一个表,该表必须包含三个列,名称分别为:"Series"、"Group" 和 "Value"。您不应更改列名,因为 ChartFactory
控件会引用它们。
由于 ChartFactory
没有从 DataSet
获取任何图表类型信息,因此需要一些方法来传递图表类型信息。 这是通过传递一个参数 ChartFactory.AddChartData
方法来实现的,该方法有三种类型的签名
ChartFactory.AddChartData(DataSet dsChart)
它将选择通过设计器属性生成器设置的
DefaultChartType
。 如果图表中存在多个系列,则图表类型将应用于所有系列。ChartFactory.AddChartData(DataSet dsChart, ChartTypeEnum chartType)
图表中的所有系列将具有相同的
chartType
。ChartFactory.AddChartData(DataSet dsChart, Hashtable SeriesChartType)
图表的每个系列可能具有不同的
ChartType
。 因此,在HashTable
中指定了图表系列名称到图表类型的映射。
可以多次调用 ChartFactory.AddChartData
方法,这样将在单个图表空间(MS 使用的术语)中呈现多个图表,并且它们将全部显示在客户端 HTML 中显示的单个 GIF 图像中。
渲染图表
最后,通过调用 ChartFactory
控件的 DataBind()
方法,从应用程序代码调用图表渲染。 必须显式调用的原因是,它使应用程序开发人员可以更好地控制何时以及何地调用。 通常,在 Page_Load
事件中,必须调用 ChartFactory.DataBind()
进行图表渲染。 如果有任何回发事件,并且该事件将更改 ChartFactory
的 DataSet
或其任何其他属性,则在回发事件期间必须再次调用此方法。
如有任何其他问题或编程扩展要求,请发送到我的邮箱。 谢谢。 我这样做都是为了分享一些对您有用的东西。
附录:CharTypeEnum 定义
#region CharTypeEnum
public enum ChartTypeEnum
{
Area = 1, /** must start with value=1 as value=0 cause
display problem in property browser */
AreaStacked,
AreaStacked3D,
BarStacked,
Bar3D,
Column,
ColumnStacked,
Column3DStacked,
Doughnut,
Line,
Line3D,
LineStacked,
Pie,
Pie3D,
PieExploded,
Pie3DExploded,
RadarLine,
ScatterLine
}
#endregion