FusionChart完全入门手册 -2

今天主要探讨下,数据文件的生成方式,只做探讨。

 

其实funsioncharts提供了多种数据展现方式,除了前一节采用的直接的DATAFile的方式外,还有官方提供的标准的c#实现方式。

看个截图

 

 

但是总感觉使用官方提供的InfoSoftGlobal不是很灵活,同时由于在前端的js调用已经做了很大的封装,调用只需要3行代码而已。于是我就考虑能否按照自己的思路封装一个可以在项目中灵活调用的工程。

目标要求:

1. 尽量减少服务器端开销

2. 调用简便

3. 扩充容易

于是自己写了一个,先说下基本思路

 

     

定义一个charts类,里面包含columns lines area pie 等,与funsioncharts提供的图表类型吻合,然后再类中定义一堆的属性,与官方帮助文档中提供的属性对应,然后定义一组方法,来实现把数据生成指定的XML格式(因为不同的图表类型的xml格式不一致,所以需要在不同的类中实现)。

调用采用前台调用方式,通过jsdataXML方式提供数据

    

 

 

这是一个官方提供的dataXML方式的工作原理。这里只是对①进行了重新封装而已。

     下面是工程中的两个截图

     

 

 

下面

前端调用的例子:


 

 

 

 1 protected void Page_Load(object sender, EventArgs e)
 2     {
 3         if (!Page.IsPostBack)
 4         {
 5             IOther other = PageEngine.CreateOther();
 6             DataSet dsMenu = other.GetUserExtInfo(studentinfo.UserID);
 7             LitMenu.Text = Tools.GetMenuList(dsMenu);
 8             
 9             
10             ILearn l = PageEngine.CreateLearn();
11             DataSet ds = l.GetLosePercentByAge();
12 
13             Column column = new Column();
14             column.BaseFont = "宋体";
15             column.BaseFontSize = "12";
16             column.LogoURL = "/images/logo.gif";
17             column.LogoAlpha = "30";
18             column.UseRoundEdges = "1";
19             column.Caption = " 各年龄段学生流失率统计";
20             column.NumberSuffix = "%";
21             column.XAxisName = "年龄段";
22             column.YAxisName = "流失率";
23 
24             string ScriptStr = @"var chart1 = new FusionCharts('http://www.cnblogs.com/Charts/Column3D.swf', 'chart1Id', '600', '400', '0', '1');";
25             ScriptStr += "chart1.setDataXML(\"" + column.ColumnsToSingleCharts(ds, column) + "\");";
26             ScriptStr += "chart1.render('chartview');";
27             ClientScript.RegisterStartupScript(ClientScript.GetType(), "Myscript", ScriptStr, true);
28 
29             var strjson = Tools.GetJsonFromDataTable(ds.Tables[0]).ToString();
30 
31             json.Text = strjson;
32 
33         }
34     }
35 

 

优点:

1.               可以在前台灵活控制需要表现的图表形式,在我的工程中,设计了可以在前台由用户灵活切换显示的图表类型

2.               通过属性的处理方式,可以在前台编码过程中,清晰获得类的具体属性。比如显示柱状图的时候,在column.XAxisName的时候可以tool-tipXAxisName的含义注意事项,给前台编码人提供很大方便,实现了前端和后台类库的分离

3.                

string ScriptStr = @"var chart1 = new FusionCharts('http://www.cnblogs.com/Charts/Column3D.swf', 'chart1Id', '600', '400', '0', '1');";

这里后来做了优化,因为2D3D调用的swf文件不同,封装了一个方法,自动获得需要调用的swf文件

由于现在工程是08的,换了新Comp后工程只有0305,现在工程转换还有点问题,在教程的最后我会提供一个完整的例子,先卖个关子,这里留待大家思考。


 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BeetleX.WebFamily之ElasticSearch搜索集成

组件在最新版本中集成了基于ElasticSearch的文档搜索功能,通过这一功能可以快速地构建文档查询的webapi服务和web搜索应用。接下来介绍一下如果使用组件的ElasticSearch组件来进行文档构建和查询。ElasticSearch要求组件支持7.x和6.x两个版本的ElasticSearch服务&am…

直男们给我看清楚!这才是小姐姐的真面目......

1 这才是化妆的真相!▼2 听说,这就是当年Tom劈过得那棵树▼3 等一下!这题真的有正确答案吗?▼4 这是一只长大成熟的猫咪了▼5 想当年上学的时候转书、转笔都一门灵,就是脑子不会转▼6 猫的四肢和尾巴仿佛都有独立…

模型部署到移动端_谷歌开源 MobileNetV3:新思路 AutoML 改进计算机视觉模型移动端...

雷锋网 AI 开发者按:谷歌从 17 年发布 MobileNets 以来,每隔一年即对该架构进行了调整和优化。现在,开发者们对 MobileNetV3 在一次进行了改进,并将 AutoML 和其他新颖的思想融入到该移动端的深度学习框架中。谷歌发布了相关文章对…

c++中stringstream_文史哲与艺术中的数学_智慧树章节答案

文史哲与艺术中的数学_智慧树章节答案更多相关问题His mother told me that he ______ read quite well at the age of five. A) should B) would C)在三角形ABC中,a,b,c分别是角A,B,C的对边,且满足m(2b&am…

将.net framework 4 部署在docker中的全过程(支持4.0 到 4.8,3.5应该也可以)

前言:docker自从诞生之初,就是运行在linux系统中,后来windows上也可以运行docker了,但是微软是通过自身的hyper-v技术,在你的windows系统中虚拟出来了一个小的linux虚拟主机,在它上面跑了个docker环境让你用…

有图有真相!这世界上,竟有人跟你长得一模一样!

全世界只有3.14 % 的人关注了爆炸吧知识你相信这个世界上有和你长得一模一样的人吗?我本来不信的看到这个摄影师的作品后真!香!冥冥之中,在平行宇宙在地球的另一端真的有另外一个你和你长得一模一样在生活,在呼吸老牌人…

两条线段的夹角 cesium_《原本》命题1.10 一条线段可以被分成两条相等的线段

命题1.10一条线段可以被分成两条相等的线段设:AB为一条直线。求作:平分为两条相等的线段。作等边三角形ABC(命题1.1)命题1.1已知一条线段可作一个等边三角形。作∠ACB的角平分线CD(命题1.9)命题1.9一个角可以切分成两个相等的角。那么:D 点就…

Minimal API Todo Sample

Minimal API Todo SampleIntro.NET 6 Preview 4 开始引入了 Minimal API 到如今的 RC1,Minimal API 也完善了许多并且修复了很多BUG,之前也写过文章介绍,可以参考:ASP.NET Core 6 Minimal API ,不过只是写了一个 Hello World, 最早…

WPF基础到企业应用系列7——深入剖析依赖属性(三)

八. 只读依赖属性 我们以前在对简单属性的封装中,经常会对那些希望暴露给外界只读操作的字段封装成只读属性,同样在WPF中也提供了只读属性的概念,如一些 WPF控件的依赖属性是只读的,它们经常用于报告控件的状态和信息,…

Web的结构组件

位于Web浏览器与Web服务器之间还有一些用于帮助他们进行事物处理的应用程序,如下所示。 代理 代理位于客户端和服务器之间,接受所有客户端的HTTP请求,并将这些请求转发给服务器。 缓存 Web缓存或代理缓存是一种特殊HTTP代理服务器&#xff0c…

从没想过从上帝视角看地球,竟美得如此震撼!

全世界只有3.14 % 的人关注了爆炸吧知识“ 当你从另一个角度俯瞰地球,你就能发现不一样的世界 。。。试想你现在飘起来了飘得越来越高,地球在你眼里慢慢变小现在,你看见的是此生从未见过的景色——《极简宇宙史》当想象力带我走向未知脑海…

双目三维重建_【光电视界】简单介绍双目视觉三维重构

今日光电有人说,20世纪是电的世纪,21世纪是光的世纪;知光解电,再小的个体都可以被赋能。欢迎来到今日光电!----与智者为伍 为创新赋能----1、三维重构1.1、三维重构到底是什么?首先要了解立体匹配算法&…

mendelay为什么安装不了_你为什么消防验收过不了?消防管道安装错误图集

来源:水电工论坛如有侵权,请联系删除消防管道安装如果一次没做好,验收不通过的话重新返工将对工程进度造成很大的影响,所以在施工时一定要注意以下的错误一定不能出现。2个沟槽卡箍间管段未设置支架立管角钢支架安装时应平面朝上管…

.NET 6 中的HTTP 3支持

dotnet团队官方博客发布了一篇HTTP3的文章:HTTP/3 support in .NET 6:https://devblogs.microsoft.com/dotnet/http-3-support-in-dotnet-6/。文章介绍了.NET 6 将预览支持HTTP3,.NET 7正式支持HTTP3,原因主要是HTTP/3 的 RFC 尚未…

Lock与synchronized 的区别

2019独角兽企业重金招聘Python工程师标准>>> 多次思考过这个问题,都没有形成理论,今天有时间了,我把他总结出来,希望对大家有所帮助 1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 …

linux 内核 三天吐血,编译安装——吐血经验,内附脚本

程序包编译安装:源码包:name-VERSION-release.src.rpmrpm由源码包安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装源代码–> 预处理–> 编译(gcc)–> 汇编–> 链接–> 执行源代码组织格式:…

mac编辑器coda使用小贴条

前言:最近用mac开发环境了,自然一天到晚用coda,可总是有不顺的地方,搜到这篇文章感觉像看到了知音人,实在是解决了我不少疑难问题啊。外文针对的coda版本较低,我总结的针对版本是version1.7.3 coda快捷键操…

我在 GitHub 上发现了一款骚气满满的字体!

全世界只有3.14 % 的人关注了爆炸吧知识转自:量子位,作者:栗体这个字体叫 Leon Sans,表面看去平平无奇。但事实上,它并不是普通的字体,体内蕴藏着魔力。Leon Sans 最特别的地方在于,字体是由代码…

PHP 接收 UDP包_php只能做网站?基于swoole+websocket开发双向通信应用

前言众所周知,PHP用于开发基于HTTP协议的网站应用非常便捷。而HTTP协议是一种单向的通信协议,只能接收客户端的请求,然后响应请求,不能主动向客户端推送信息。因此,一些实时性要求比较高的应用,如实时聊天、…

WPF 实现火炬效果

WPF开发者QQ群: 340500857 | 微信群 -> 进入公众号主页 加入组织欢迎转发、分享、点赞、在看,谢谢~。 01—效果预览02—代码如下一、FireControl.cs 代码如下using System; using System.Collections.Generic; using System.Linq; using System.Tex…