手机版

ASP.NET实时图共享实现方法

时间:2021-11-14 来源:互联网 编辑:宝哥软件园 浏览:

在分析和比较大量数据时,最常用和最直观的方法是绘制趋势图。一般来说,我们用EXCEL制作各种类型的趋势图,但都是基于静态数据,即数据是提前排序的,而不是动态生成的。如果发布在互联网上,只能将绘制的图表发布为静态GIF图像,无法从根本上满足不同用户对不同数据的需求。ASP擅长服务器端的Web编程,其强项是操作后台数据库。但是用ASP制作实时数据库图表有点困难,因为ASP本身不支持图表功能,只能借助第三方控件来开发,比如VB的MSChart控件。那个。微软推出的. NET框架很好地解决了这个问题。owc(Microsoft office web components)是一个实时数据库图表组件,已经由微软在。NET平台。通过在ASP.NET页面调用OWC,我们可以轻松绘制各种类型的实时图表。OWC支持近50种图表类型,包括图表、折线图、直方图、面积图和k线图。与MSChart相比,OWC功能强大且易于操作。另外,由于OWC是基于服务器的,MSChart只能应用于客户端,所以MSChart在服务器上的Web开发不如OWC。下面,笔者将结合自己开发的项目《化纤产品及其原料市场分析系统》的一个子系统——OWC在ASP.NET页面的应用举例进行阐述。作者在这个项目中使用了OWC,充分享受了OWC强大功能带来的便利。三层系统整体架构采用B/S三层结构模式,将系统分为用户界面层(也称表示层)、业务逻辑层(也称功能层)和数据库服务层(也称数据层),开发平台采用。NET框架,有效降低了系统对客户端的要求,避免了在客户端分发应用和版本控制的困难。用户界面层:的用户界面采用ASP.NET技术。ASP.NET技术的应用增强了系统的通用性,客户端只需安装IE或Netscape等任何浏览器,无需加载任何组件。业务逻辑层:采用的技术。NET框架调用OWC,可以快速获取数据库中的数据,并根据用户需求动态生成图表。该系统能够支持复杂的检索条件,检索速度快,响应时间短。数据库服务层:数据库服务层可以采用任何关系数据库。在这个项目中,作者使用了SQL Server,它可以与。NET框架。ADO.NET用于数据库访问技术。我们将重点关注业务逻辑层的实现。图表元素简介一个完整的图表是由几个元素组成的,我们必须理解它们,这样才能随意、充分、自由地控制图表的各个方向,更好地理解程序。作者制作了一个简单的图表,标出了程序中涉及的主要部分和元素的名称,以帮助读者掌握OWC和理解本文引用的代码。

本节使用OWC组件涉及的源代码取自《化纤产品及其原料市场分析系统》,系统已在windows 2000/XP简体中文专业版和环境下通过。NET Framewrok 1 .0。使用OWC组件的步骤如下:1 .在当前目录中创建新的子目录图表,并将目录的“修改”权限授予ASP.NET帐户。具体步骤如下:右键单击图表目录名称,选择“属性”菜单项,在弹出的“图表”属性对话框中单击“安全性”选项卡,单击“添加”按钮,找到ASP.NET帐户,授予“修改”权限,单击“确定”按钮完成。这样,ASP.NET就可以将图表文件写入图表目录。2.定义一个服务器端的Image控件,图像的imageURL属性会指向程序末尾动态生成的图表文件,这里不需要给它赋值。复制的代码如下: ASP : Image ID=" img chart " width=" 500 " height=" 300 " visible=" false " Runat=" server "/ASP : Image 3。添加OWC参考。在使用OWC之前,您必须首先将OWC的引用添加到解决方案资源管理器中。具体步骤如下:打开“解决方案资源管理器”面板,右键单击“引用”,选择“添加引用”菜单,在弹出的“添加引用”对话框中单击COM卡,找到Microsoft Office Web Components 9.0,单击“选择”和“确定”按钮,OWC将被添加到引用中。4.定义OWC空间,并在该空间中添加一个owcChart。复制代码如下: dim owcChartspace as owc . chart space=new owc . chart space()dim owc chartas owc . wcchart=owc chart space . charts . add 5 .用SQL搜索条件搜索数据库,将搜索结果以RecordSet数据集的形式赋给owc chart。OWC只支持RecordSet数据集,不支持DataSet数据集,因此在检索中不能使用sqlCommand和sqlDataAdapter等对象,只能使用RecordSet对象进行检索。复制代码如下: '打开连接ConnADO。打开(连接字符串)。记录集ado。“活动连接=connado”将光标设置为静态光标Recordset ado。cursortype=adodb。cursortypeenum。一个静态记录集。cursorlocation=adodb。cur。' SorLocationEnum.adUseClient '变量strSQL存储标准的SQL检索条件RecordsetADO。打开(strSQL),然后将RecordSet数据集分配给OWC对象:复制代码如下:owcchartspace。datasource=recordsetado在本例中,我们假设SQL语句检索的数据有三个字段:产品、日期和价格。这三个字段的值分别对应图表中曲线、分类(x)轴和数值(y)轴的数据。6.确定曲线类型和区分不同曲线的字段名称。首先,确定曲线类型为平滑曲线。复制代码如下: owcchart . type=owc . charttypenum . chchartypesmoothline owc支持在同一个图表中显示两条以上的曲线。因此,我们必须给出区分不同曲线的依据,这就是“乘积”字段的值。具体来说,如果“产品”字段中有几个不同的值,将生成几条不同的曲线。复制代码如下: owc chart . setdata(owc . chart dimensionenum . chdimseries name,0,“product”)7。确定对应于类别(x)轴标签和值(y)轴标签的字段。首先我们需要定义一个以OWCSeries为owc的曲线集,然后遍历图表中的每一条曲线,将“日期”字段的值赋给分类(x)轴作为x轴刻度标签,将“价格”字段的值赋给数值(y)轴作为y轴刻度标签。如果能确认图表中只有一条曲线,也可以省略遍历过程,但这无疑会降低程序的通用性。复制代码如下: dim owc series as owc . WC series针对owc chart.series集合中的每个owc series . owc series . set data(owc . chartdimensenum . chdimcategories,0," date ")owc series . set data(owc . chartdimensenum . chdimvalues,0," price") Next 8。设置坐标轴的属性。

这部分代码通过设置文字内容、颜色、大小、主辅刻度线及其标签、主辅网线等来美化图表。如果读者对这段代码中的概念有些模糊,他们可以参考上一节提供的图表。具体设置方法见以下代码。复制的代码如下: '首先将轴定义为轴,将Dim轴设置为OWC。为工作区中的每个轴设置的“工作轴”横向轴。轴'显示轴标题轴。' HasTitle=True '首先设置分类(x)轴If轴。类型=OWC。chartaxistypeenum . chcategoryaxis然后axis.hasticklabels=true '显示x轴刻度标签轴。position=owc . chartaxisitioneum . chaxissitionbbottom '显示标签的位置axi。S. title.font.color="blue"' X轴标题文本颜色轴. title.font.size="9"' X轴标题文本大小轴。Title.Caption="日期范围" ' X轴标题文本内容' Else '设置数值轴(y)。s . line . color=" silver " ' y轴主网络线轴的颜色. majoritckmarks=owc . chartickmarkenum . chtickmarknone '不显示y轴主刻度线轴。显示y轴刻度标记轴。钛.title . font . color=" blue " ' Y轴标题文本颜色轴. title.font.size="9"' Y轴标题文本大小轴。Title.Caption=“价格(千元/吨)”“Y轴标题文字内容End If Next 9。以GIF图像格式输出图表,并将图像文件名分配给图像控件。复制代码如下: '使用随机数生成随机文件名:随机化()dim n文件名后缀为整数dim s文件名后缀为字符串n文件名后缀=100000 * rnd()。文件名后缀=系统。convert.tostring (nfilename后缀)'图表以GIF格式输出,大小为500*300。图表的文件名为:polyesterprice _ random number.gif,Owc chartspace。导出图片(映射路径(“图表/聚酯价格”)的文件名后缀”。gif "," gif ",500,300)'将Image控件的URL指向图表文件img chart . Image URL=" chart/聚脂price _" s filename后缀。gif“通过以上九个步骤,我们已经完成了一个实时数据库图表的生成和显示。这里需要指出的是,以上九个步骤只是生成图表必不可少的基本过程。通过设置OWC的其他属性,可以更好、更准确地控制图表的生成和显示方式,如图例、线条的粗细和颜色、坐标轴的刻度线和标签的显示频率、网线等。这部分我就不介绍了,请参考本文第四部分的源代码。本文代码产生的图表效果见下图。

优化上面实时生成的所有图表文件都存储在图表文件夹中。因为采用了随机文件名,所以这些文件不会互相覆盖。但是随着时间的推移,越来越多的文件不仅占用了硬盘空间,还阻碍了管理,降低了性能。我们能自动删除程序中以前的图表文件吗?答案是肯定的。只要我们把下面的代码放在代码文件的Page_Load()函数中,当程序运行时,当天之前的文件就会被自动删除。这样,当天生成的图表文件始终存储在图表文件夹中,有效避免了文件垃圾。复制代码如下: '首先获取图表文件夹中的文件列表:dim file entries()as string=system。io.directory.getfiles (mappath(“图表”)。将文件标记为字符串“遍历文件条目中每个文件的文件列表”将文件生成日期与系统日期进行比较,如果是在当天之前生成的文件,则在日期时间之前将其删除。比较(系统。io.file.get creationtime (sfile)。adddays (1),datetime.now) 0然后system。io.file.delete (sfile) end if next虽然OWC生成的图表功能齐全,界面美观,但也有很多缺陷。首先,OWC不支持DataSet数据集,所以我们不能在生成图表的同时使用DataGrid来显示数据表,除非我们通过循环取出Recordset记录集中的所有数据来手动生成表,或者使用相同的检索条件来第二次检索数据库,但这无疑会增加服务器的负担。其次,同一张图表中绘制的曲线只能是同一类型,或者都是平滑图或者都是直方图,不能在同一张图表中显示不同类型的曲线。最后,在一些细节上,比如分类(x)轴的设置,OWC无法提供更细致、更人性化的设置方式。如果读者想要追求更强大的功能和更好的显示效果,我推荐两款基于的专业图表控件。NET,分别由Dundas和Softwarefx制作,两者同时支持Web Form和Win Form的开发,但都是付费的。如果读者感兴趣,可以从自己的网站下载DEMO版本,体验专业图表控件带来的强大功能。

版权声明:ASP.NET实时图共享实现方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。