网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > DotNet > ASP.NET > ASP.NET中实时图表的实现  

ASP.NET中实时图表的实现

2006-03-30  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏

4. 定义OWC空间,并在该空间中加入一个OWC图表owcChart. 网管网www.bitscn.com

    Dim owcChartSpace As OWC.ChartSpace = New OWC.ChartSpace()

网管下载dl.bitscn.com

    Dim owcChart As OWC.WCChart = owcChartSpace.Charts.Add

网管下载dl.bitscn.com

    5. 用SQL检索条件进行数据库检索,并将检索结果以RecordSet数据集的方式赋给owcChart. 网管网www_bitscn_com

    OWC只支持RecordSet数据集,不支持DataSet数据集,因此在检索时不能使用sqlCommand、sqlDataAdapter等对象,只能使用RecordSet对象进行检索。

网管u家u.bitsCN.com

    ‘打开connection连接

网管u家u.bitscn@com

    ConnADO.Open(connectionString) 网管u家u.bitsCN.com

    RecordsetADO.ActiveConnection = ConnADO

网管网www.bitscn.com

    ‘设置游标为静态游标

中国网管联盟bitsCN.com

    RecordsetADO.CursorType = ADODB.CursorTypeEnum.adOpenStatic 网管u家u.bitscn@com

    RecordsetADO.CursorLocation = ADODB.CursorLocationEnum.adUseClient

中国网管联盟bitsCN.com

    ‘变量strSQL中存放了标准SQL检索条件

中国网管联盟bitsCN.com

    RecordsetADO.Open(strSQL)

网管论坛bbs_bitsCN_com

    然后将RecordSet数据集赋给OWC对象:

网管网www.bitscn.com

    owcChartSpace.DataSource = RecordsetADO

网管网www_bitscn_com

    在本例中,我们假定用SQL语句检索出的数据共有三个字段:产品、日期和价格。这三个字段的值分别与图表中的曲线、分类(X)轴和数值(Y)轴的数据一一对应。

网管论坛bbs_bitsCN_com

    6. 确定曲线类型,并确定区别不同曲线的字段名。 中国网管论坛bbs.bitsCN.com

    首先确定曲线类型为平滑曲线。 网管下载dl.bitscn.com

    owcChart.Type = OWC.ChartChartTypeEnum.chChartTypeSmoothLine

网管bitscn_com

    OWC支持在同一张图表中显示两条以上的曲线。因此我们必须给出区别不同曲线的依据,这个依据就是“产品”字段的取值。具体地说,“产品”字段中有几个不同的取值,就会生成几条不同的曲线。 网管网www_bitscn_com

    owcChart.SetData(OWC.ChartDimensionsEnum.chDimSeriesNames, 0, “产品”)

网管u家u.bitsCN.com

    7. 确定分类(X)轴标签与数值(Y)轴标签所对应的字段。 网管论坛bbs_bitsCN_com

    首先需要定义owcSeries为OWC的曲线集合,然后遍历图表中的每一条曲线,将“日期”字段的值赋给分类(X)轴作为X轴刻度标签,将“价格”字段的值赋给数值(Y)轴作为Y轴刻度标签。如果我们能够确定图表中只有一条曲线,也可以省略遍历的过程,但这样无疑会降低程序的通用性。 网管u家u.bitsCN.com

    Dim owcSeries As OWC.WCSeries

网管网www_bitscn_com

    For Each owcSeries In owcChart.SeriesCollection 网管u家u.bitsCN.com

    owcSeries.SetData(OWC.ChartDimensionsEnum.chDimCategories, 0, “日期”) 网管网www.bitscn.com

    owcSeries.SetData(OWC.ChartDimensionsEnum.chDimValues, 0, “价格”)

网管联盟bitsCN@com

    Next

中国网管联盟bitsCN.com

    8. 对坐标轴的属性进行设置。 网管网www_bitscn_com

    这部分代码通过对坐标轴标题的文字内容、颜色、大小、主要和次要刻度线及其标签、主要和次要网络线等方面的设置美化图表。读者如果对本段代码中的概念有些模糊,可以参考前一部分提供的那张图表。具体设置方法请参见以下代码。 网管网www.bitscn.com

    ‘先定义axis为坐标轴集合 网管论坛bbs_bitsCN_com

    Dim axis As OWC.WCAxis 网管u家u.bitsCN.com

    ‘遍历坐标轴集合

网管u家u.bitsCN.com

    For Each axis In owcChart.Axes 网管u家u.bitsCN.com

    ‘显示轴标题 网管网www.bitscn.com

    axis.HasTitle = True

网管u家u.bitscn@com

    ‘先对分类(X)轴进行设置 网管联盟bitsCN@com

    If axis.Type=OWC.ChartAxisTypeEnum.

网管联盟bitsCN_com

    chCategoryAxis Then 网管论坛bbs_bitsCN_com

    axis.HasTickLabels = True

网管网www.bitscn.com

    ‘显示X轴刻度标签 网管联盟bitsCN@com

    axis.Position = OWC.ChartAxisPositionEnum.chAxisPositionBottom

网管bitscn_com

    ‘标签的显示位置

网管u家u.bitsCN.com

    axis.Title.Font.Color =“blue”

网管论坛bbs_bitsCN_com

    ‘X轴的标题文字颜色

网管联盟bitsCN_com

    axis.Title.Font.Size = “9”

网管u家u.bitsCN.com

    ‘X轴的标题文字大小

网管网www.bitscn.com

    axis.Title.Caption = “日期范围”

网管论坛bbs_bitsCN_com

    ‘X轴的标题文字内容 中国网管联盟bitsCN.com

    Else

中国网管论坛bbs.bitsCN.com

    ‘对数值(Y)轴进行设置

网管联盟bitsCN@com

    axis.MajorGridlines.Line.Color = “silver” 网管联盟bitsCN@com

    ‘Y轴主要网络线的颜色 网管bitscn_com

    axis.MajorTickMarks = OWC.ChartTickMarkEnum.chTickMarkNone

网管网www.bitscn.com

    ‘不显示Y轴主要刻度标记 中国网管联盟bitsCN.com

    axis.HasTickLabels = True 网管联盟bitsCN_com

    ‘显示Y轴刻度标签 网管联盟bitsCN_com

    axis.Title.Font.Color = “blue”

网管bitscn_com

    ‘Y轴的标题文字颜色 网管bitscn_com

    axis.Title.Font.Size = “9” 网管u家u.bitsCN.com

    ‘Y轴的标题文字大小 网管论坛bbs_bitsCN_com

    axis.Title.Caption=“价格(千元/吨)” 网管论坛bbs_bitsCN_com

    ‘Y轴的标题文字内容

中国网管论坛bbs.bitsCN.com

    End If

网管联盟bitsCN@com

    Next 网管u家u.bitsCN.com

    9. 以GIF图像格式输出图表,并将图像文件名赋给Image控件。 中国网管联盟bitsCN.com

    ‘用随机数来生成随机文件名

网管联盟bitsCN@com

    Randomize()

网管网www_bitscn_com

    Dim nFileNameSuffix As Integer 网管u家u.bitscn@com

    Dim sFileNameSuffix As String

中国网管联盟bitsCN.com

    nFileNameSuffix = 100000 * Rnd() 网管网www.bitscn.com

    sFileNameSuffix = System.Convert.ToString(nFileNameSuffix) 网管u家u.bitsCN.com

    ‘以GIF格式输出图表,大小为500*300,图表的文件名为:polyesterprice_随机数。gif,存放在chart子目录中

网管网www_bitscn_com

    owcChartSpace.ExportPicture(MapPath(“chart/PolyesterPrice_”) + sFileNameSuffix + “。gif”, “gif”, 500, 300) 网管论坛bbs_bitsCN_com

    ‘将Image控件的URL指向该图表文件 网管下载dl.bitscn.com

    imgChart.ImageUrl=“chart/PolyesterPrice_” + sFileNameSuffix + “。gif”

中国网管论坛bbs.bitsCN.com

    通过以上九个步骤,我们就完成了一个实时数据库图表的生成与显示。在此需要指出的是,以上的九个步骤只是生成一张图表必不可少的基本过程,通过设置OWC的其他属性可以更好、更精确地控制图表的生成与显示方式,如图例、线条的粗细与颜色、坐标轴刻度线及标签的显示频度、网络线等。这部分笔者不再介绍,请参见本文第四部分的源代码。

网管u家u.bitsCN.com

    本文代码生成的图表效果请见下图。 网管联盟bitsCN@com

优化

    上文中所有实时生成的图表文件都存放在chart文件夹中,由于采用了随机文件名的方式,因此这些文件不会互相覆盖。但是如此日积月累,越来越多的文件不仅占用了硬盘空 间,也妨碍了管理,降低了性能。我们能不能在程序中自动删除以前的图表文件呢?答案是肯定的。我们只要在代码文件的Page_Load()函数中放置如下一段代码,程序运行的时候,就会自动删除当日以前的文件。这样,chart文件夹中存放的就总是当日生成的图表文件,从而有效地避免了文件垃圾。 网管联盟bitsCN@com

    ‘先取得chart文件夹中的文件列表

网管联盟bitsCN@com

    Dim fileEntries() As String = System.IO.Directory.GetFiles(MapPath(“chart”))

网管u家u.bitsCN.com

    Dim sFile As String

网管联盟bitsCN_com

    ‘遍历文件列表 网管u家u.bitscn@com

    For Each sFile In fileEntries

网管联盟bitsCN_com

    ‘将文件的生成日期与系统日期相比,如果是当日以前生成的文件,删除它 网管bitscn_com

    If DateTime.Compare(System.IO.File.GetCreationTime(sFile)。AddDays(1), DateTime.Now) < 0 Then 网管下载dl.bitscn.com

    System.IO.File.Delete(sFile) 中国网管论坛bbs.bitsCN.com

    End If 中国网管联盟bitsCN.com

    Next 网管论坛bbs_bitsCN_com

    虽然用OWC生成的图表功能齐全,界面美观,但它也存在着不少的缺陷。首先,OWC不支持DataSet数据集,这样我们就无法在生成图表的同时使用DataGrid显示数据表,除非我们用循环依次取出Recordset记录集中的全部数据手工生成表格,或用同样的检索条件对数据库进行二次检索,但这无疑要增加服务器的负担。其次,在同一张图表中绘制的曲线只能是同一种类型,或同为平滑曲线图,或同为柱状图,它不能在同一张图表中显示不同类型的曲线。最后,在某些细节方面,如分类(X)轴的设置方面,OWC无法提供更加详细、人性化的设置途径。如果读者要追求更强大的功能和更好的显示效果,笔者向您推荐两个专业的基于。NET的图表控件,这两个控件分别由Dundas和Softwarefx公司出品,都同时支持Web Form和Win Form开发,只是这两个控件都是付费的。读者如果有兴趣,可以到它们的网站去下载DEMO版本,以亲身体验一下专业图表控件带来的强大功能。

网管网www_bitscn_com


TAGs实现   图表   实时   OWC   生成   曲线   数据   显示   数据库    
 上一篇:asp.net中调用Office来制作3D统计图   下一篇:用ASP.NET结合XML制作广告管理程序
ASP.NET中实时图表的实现 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: