当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  ASP.NET中实时图表的实现(2)

 ASP.NET中实时图表的实现(2)

点击次数:27 次 发布日期:2008-11-26 14:13:15 作者:源代码网
源代码网推荐      4. 定义OWC空间,并在该空间中加入一个OWC图表owcChart。
源代码网推荐  
源代码网推荐  Dim owcChartSpace As OWC.ChartSpace = New OWC.ChartSpace()
源代码网推荐  
源代码网推荐  Dim owcChart As OWC.WCChart = owcChartSpace.Charts.Add
源代码网推荐  
源代码网推荐  5. 用SQL检索条件进行数据库检索,并将检索结果以RecordSet数据集的方式赋给owcChart。
源代码网推荐  
源代码网推荐  OWC只支持RecordSet数据集,不支持DataSet数据集,因此在检索时不能使用sqlCommand、sqlDataAdapter等对象,只能使用RecordSet对象进行检索。
源代码网推荐  
源代码网推荐  ’打开connection连接
源代码网推荐  
源代码网推荐  ConnADO.Open(connectionString)
源代码网推荐  
源代码网推荐  RecordsetADO.ActiveConnection = ConnADO
源代码网推荐  
源代码网推荐  ’设置游标为静态游标
源代码网推荐  
源代码网推荐  RecordsetADO.CursorType = ADODB.CursorTypeEnum.adOpenStatic
源代码网推荐  
源代码网推荐  RecordsetADO.CursorLocation = ADODB.CursorLocationEnum.adUseClient
源代码网推荐  
源代码网推荐  ’变量strSQL中存放了标准SQL检索条件
源代码网推荐  
源代码网推荐  RecordsetADO.Open(strSQL)
源代码网推荐  
源代码网推荐  然后将RecordSet数据集赋给OWC对象:
源代码网推荐  
源代码网推荐  owcChartSpace.DataSource = RecordsetADO
源代码网推荐  
源代码网推荐  在本例中,我们假定用SQL语句检索出的数据共有三个字段:产品、日期和价格。这三个字段的值分别与图表中的曲线、分类(X)轴和数值(Y)轴的数据一一对应。
源代码网推荐  
源代码网推荐  6. 确定曲线类型,并确定区别不同曲线的字段名。
源代码网推荐  
源代码网推荐  首先确定曲线类型为平滑曲线。
源代码网推荐  
源代码网推荐  owcChart.Type = OWC.ChartChartTypeEnum.chChartTypeSmoothLine
源代码网推荐  
源代码网推荐  OWC支持在同一张图表中显示两条以上的曲线。因此我们必须给出区别不同曲线的依据,这个依据就是“产品”字段的取值。具体地说,“产品”字段中有几个不同的取值,就会生成几条不同的曲线。
源代码网推荐  
源代码网推荐  owcChart.SetData(OWC.ChartDimensionsEnum.chDimSeriesNames, 0, “产品”)
源代码网推荐  
源代码网推荐  7. 确定分类(X)轴标签与数值(Y)轴标签所对应的字段。
源代码网推荐  
源代码网推荐  首先需要定义owcSeries为OWC的曲线集合,然后遍历图表中的每一条曲线,将“日期”字段的值赋给分类(X)轴作为X轴刻度标签,将“价格”字段的值赋给数值(Y)轴作为Y轴刻度标签。如果我们能够确定图表中只有一条曲线,也可以省略遍历的过程,但这样无疑会降低程序的通用性。
源代码网推荐  
源代码网推荐  Dim owcSeries As OWC.WCSeries
源代码网推荐  
源代码网推荐  For Each owcSeries In owcChart.SeriesCollection
源代码网推荐  
源代码网推荐  owcSeries.SetData(OWC.ChartDimensionsEnum.chDimCategories, 0, “日期”)
源代码网推荐  
源代码网推荐  owcSeries.SetData(OWC.ChartDimensionsEnum.chDimValues, 0, “价格”)
源代码网推荐  
源代码网推荐  Next
源代码网推荐  
源代码网推荐  8. 对坐标轴的属性进行设置。
源代码网推荐  
源代码网推荐  这部分代码通过对坐标轴标题的文字内容、颜色、大小、主要和次要刻度线及其标签、主要和次要网络线等方面的设置美化图表。读者如果对本段代码中的概念有些模糊,可以参考前一部分提供的那张图表。具体设置方法请参见以下代码。
源代码网推荐  
源代码网推荐  ’先定义axis为坐标轴集合
源代码网推荐  
源代码网推荐  Dim axis As OWC.WCAxis
源代码网推荐  
源代码网推荐  ’遍历坐标轴集合
源代码网推荐  
源代码网推荐  For Each axis In owcChart.Axes
源代码网推荐  
源代码网推荐  ’显示轴标题
源代码网推荐  
源代码网推荐  axis.HasTitle = True
源代码网推荐  
源代码网推荐  ’先对分类(X)轴进行设置
源代码网推荐  
源代码网推荐  If axis.Type=OWC.ChartAxisTypeEnum.
源代码网推荐  
源代码网推荐  chCategoryAxis Then
源代码网推荐  
源代码网推荐  axis.HasTickLabels = True
源代码网推荐  
源代码网推荐  ’显示X轴刻度标签
源代码网推荐  
源代码网推荐  axis.Position = OWC.ChartAxisPositionEnum.chAxisPositionBottom
源代码网推荐  
源代码网推荐  ’标签的显示位置
源代码网推荐  
源代码网推荐  axis.Title.Font.Color =”blue”
源代码网推荐  
源代码网推荐  ’X轴的标题文字颜色
源代码网推荐  
源代码网推荐  axis.Title.Font.Size = “9”
源代码网推荐  
源代码网推荐  ’X轴的标题文字大小
源代码网推荐  
源代码网推荐  axis.Title.Caption = “日期范围”
源代码网推荐  
源代码网推荐  ’X轴的标题文字内容
源代码网推荐  
源代码网推荐  Else
源代码网推荐  
源代码网推荐  ’对数值(Y)轴进行设置
源代码网推荐  
源代码网推荐  axis.MajorGridlines.Line.Color = “silver”
源代码网推荐  
源代码网推荐  ’Y轴主要网络线的颜色
源代码网推荐  
源代码网推荐  axis.MajorTickMarks = OWC.ChartTickMarkEnum.chTickMarkNone
源代码网推荐  
源代码网推荐  ’不显示Y轴主要刻度标记
源代码网推荐  
源代码网推荐  axis.HasTickLabels = True
源代码网推荐  
源代码网推荐  ’显示Y轴刻度标签
源代码网推荐  
源代码网推荐  axis.Title.Font.Color = “blue”
源代码网推荐  
源代码网推荐  ’Y轴的标题文字颜色
源代码网推荐  
源代码网推荐  axis.Title.Font.Size = “9”
源代码网推荐  
源代码网推荐  ’Y轴的标题文字大小
源代码网推荐  
源代码网推荐  axis.Title.Caption=“价格(千元/吨)”
源代码网推荐  
源代码网推荐  ’Y轴的标题文字内容
源代码网推荐  
源代码网推荐  End If
源代码网推荐  
源代码网推荐  Next
源代码网推荐  
源代码网推荐  9. 以GIF图像格式输出图表,并将图像文件名赋给Image控件。
源代码网推荐  
源代码网推荐  ’用随机数来生成随机文件名
源代码网推荐  
源代码网推荐  Randomize()
源代码网推荐  
源代码网推荐  Dim nFileNameSuffix As Integer
源代码网推荐  
源代码网推荐  Dim sFileNameSuffix As String
源代码网推荐  
源代码网推荐  nFileNameSuffix = 100000 * Rnd()
源代码网推荐  
源代码网推荐  sFileNameSuffix = System.Convert.ToString(nFileNameSuffix)
源代码网推荐  
源代码网推荐  ’以GIF格式输出图表,大小为500*300,图表的文件名为:polyesterprice_随机数.gif,存放在chart子目录中
源代码网推荐  
源代码网推荐  owcChartSpace.ExportPicture(MapPath(“chart/PolyesterPrice_”) + sFileNameSuffix + “.gif”, “gif”, 500, 300)
源代码网推荐  
源代码网推荐  ’将Image控件的URL指向该图表文件
源代码网推荐  
源代码网推荐  imgChart.ImageUrl=“chart/PolyesterPrice_” + sFileNameSuffix + “.gif”
源代码网推荐  
源代码网推荐  通过以上九个步骤,我们就完成了一个实时数据库图表的生成与显示。在此需要指出的是,以上的九个步骤只是生成一张图表必不可少的基本过程,通过设置OWC的其他属性可以更好、更精确地控制图表的生成与显示方式,如图例、线条的粗细与颜色、坐标轴刻度线及标签的显示频度、网络线等。这部分笔者不再介绍,请参见本文第四部分的源代码。
源代码网推荐  
源代码网推荐  本文代码生成的图表效果请见下图。
源代码网推荐  
源代码网推荐  优化
源代码网推荐  
源代码网推荐  上文中所有实时生成的图表文件都存放在chart文件夹中,由于采用了随机文件名的方式,因此这些文件不会互相覆盖。但是如此日积月累,越来越多的文件不仅占用了硬盘空 间,也妨碍了管理,降低了性能。我们能不能在程序中自动删除以前的图表文件呢?答案是肯定的。我们只要在代码文件的Page_Load()函数中放置如下一段代码,程序运行的时候,就会自动删除当日以前的文件。这样,chart文件夹中存放的就总是当日生成的图表文件,从而有效地避免了文件垃圾。
源代码网推荐  
源代码网推荐  ’先取得chart文件夹中的文件列表
源代码网推荐  
源代码网推荐  Dim fileEntries() As String = System.IO.Directory.GetFiles(MapPath(“chart”))
源代码网推荐  
源代码网推荐  Dim sFile As String
源代码网推荐  
源代码网推荐  ’遍历文件列表
源代码网推荐  
源代码网推荐  For Each sFile In fileEntries
源代码网推荐  
源代码网推荐  ’将文件的生成日期与系统日期相比,如果是当日以前生成的文件,删除它
源代码网推荐  
源代码网推荐  If DateTime.Compare(System.IO.File.GetCreationTime(sFile).AddDays(1), DateTime.Now) < 0 Then
源代码网推荐  
源代码网推荐  System.IO.File.Delete(sFile)
源代码网推荐  
源代码网推荐  End If
源代码网推荐  
源代码网推荐  Next
源代码网推荐  
源代码网推荐  虽然用OWC生成的图表功能齐全,界面美观,但它也存在着不少的缺陷。首先,OWC不支持DataSet数据集,这样我们就无法在生成图表的同时使用DataGrid显示数据表,除非我们用循环依次取出Recordset记录集中的全部数据手工生成表格,或用同样的检索条件对数据库进行二次检索,但这无疑要增加服务器的负担。其次,在同一张图表中绘制的曲线只能是同一种类型,或同为平滑曲线图,或同为柱状图,它不能在同一张图表中显示不同类型的曲线。最后,在某些细节方面,如分类(X)轴的设置方面,OWC无法提供更加详细、人性化的设置途径。如果读者要追求更强大的功能和更好的显示效果,笔者向您推荐两个专业的基于.NET的图表控件,这两个控件分别由Dundas和Softwarefx公司出品,都同时支持Web Form和Win Form开发,只是这两个控件都是付费的。读者如果有兴趣,可以到它们的网站去下载DEMO版本,以亲身体验一下专业图表控件带来的强大功能。
源代码网推荐  
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华