FusionCharts simple demo for (html+js、APS.NET Webform、MVC)

  做GIS或其他内部数据统计项目的应该对FusionCharts也不会太陌生,简单易用已无需多说什么了,只是有时候框架不同,实现起来也稍有差异

  引用dll调用FusionCharts类的静态方法RenderChartHTML 返回html绑定在数据控件上更为符合webform;

  使用JS代码new FusionCharts对象,调用对象的setDataXML或者setDataURL方法更为符合MVC

1、HTML+JS

<!--html-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="/Scripts/jquery-1.4.4.min.js" type="text/javascript"></script>
    <script src="/package/FusionCharts/Charts/FusionCharts.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            initChars();
        })

        function initChars() {
            var chart = new FusionCharts("/package/FusionCharts/Charts/2Column3D.swf", "ChartId", "600", "350");
            //1、加载字符串
            //var dataXml = "<chart  rotateYAxisName=‘0‘ baseFont=‘微软雅黑‘ baseFontSize=‘12‘  caption=‘‘ yAxisName=‘水果数量‘ bgcolor=‘FFFFFF‘  bgalpha=‘100‘  showValues=‘1‘ formatNumberScale=‘0‘ showBorder=‘0‘><set label=‘香蕉‘ value=‘12‘  /><set label=‘橘子‘ value=‘55‘ /><set label=‘苹果‘ value=‘23‘ /><set label=‘人参果‘ value=‘20‘ /></chart>";
            //chart.setDataXML(dataXml);
            //2、加载xml
            chart.setDataURL("/package/FusionCharts/FruitsData.xml");
            chart.render("showData");
        }
    </script>
</head>
<body>
    <div id="showData">
    </div>
</body>
</html>

<!--xml-->
<chart  rotateYAxisName=‘0‘ baseFont=‘微软雅黑‘ baseFontSize=‘12‘  caption=‘‘  yAxisName=‘水果数量‘ bgcolor=‘FFFFFF‘  bgalpha=‘100‘  showValues=‘1‘ formatNumberScale=‘0‘ showBorder=‘0‘>
  <set label=‘香蕉‘ value=‘12‘  />
  <set label=‘橘子‘ value=‘55‘ />
  <set label=‘苹果‘ value=‘23‘ />
  <set label=‘人参果‘ value=‘20‘ />
</chart>

2、ASP.NET Webform

 <!-------------aspx---------------->
<form id="form1" runat="server">
    <div>
        <table id="tbl" border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td>
                    <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">
                        <asp:ListItem Text="柱状图" Value="0"></asp:ListItem>
                        <asp:ListItem Text="饼状图" Value="1"></asp:ListItem>
                    </asp:DropDownList>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:Panel ID="Panel1" runat="server">
                    </asp:Panel>
                </td>
            </tr>
        </table>
    </div>
    </form>

 <!-------------code behind---------------->

protected void Page_Load(object sender, EventArgs e)
        {
            Panel1.Controls.Clear();
            Dictionary<string, int> data = new Dictionary<string, int>() {
                 {"香蕉",12},
                 {"橘子",55},
                 {"苹果",23},
                 {"人参果",20}
            };
            Panel1.Controls.Add(ShowNewChart(data, DropDownList1.SelectedValue, "数量"));
        }

 /// <summary>
        /// 绑定图形数据
        /// </summary>
        /// <param name="dic">数据</param>
        /// <param name="Type">图形类型</param>
        /// <param name="yAxisName">柱状图显示标题</param>
        /// <returns></returns>
        private LiteralControl ShowNewChart(Dictionary<string, int> dic, string Type, string yAxisName)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("<chart rotateYAxisName=‘0‘ baseFont=‘微软雅黑‘ baseFontSize=‘12‘  caption=‘‘  xAxisName=‘‘ yAxisName=‘" + yAxisName + "‘ bgcolor=‘FFFFFF‘  bgalpha=‘100‘  showValues=‘1‘ formatNumberScale=‘0‘ showBorder=‘0‘>");
            foreach (string key in dic.Keys)
            {
                sb.AppendFormat("<set label=‘{0}‘ value=‘{1}‘/>", key, dic[key]);
            }
            sb.AppendFormat("</chart>");
            string types = "";
            if (Type == "1")
            {
                //饼状图 swf路径
                types = "package/FusionCharts/Charts/Pie3D.swf";
            }
            else if (Type == "0")
            {
                //柱状图
                types = "package/FusionCharts/Charts/2Column3D.swf";
            }
            return new LiteralControl(FusionCharts.RenderChartHTML(types, "", sb.ToString(), "chart1", "650", "250", false, false));

        }

3、ASP.NET MVC

//--------------------------view----------------------------------
<script src="@Url.Content("~/package/FusionCharts/Charts/FusionCharts.js")" type="text/javascript"></script>
<script type="text/javascript">

    $(function () {
        initChars(‘@Url.Content("~/package/FusionCharts/Charts/2Column3D.swf")‘);
        BindslMapTypeChange();
    })
    //初始化图表
    function initChars(fusionChartsPath) {
        var chart = new FusionCharts(fusionChartsPath, "ChartId", "600", "350");
        chart.setDataXML("@(new MvcHtmlString(ViewData.Model))");
        chart.render("showData");
    }
    //绑定图表类型选择按钮事件
    function BindslMapTypeChange() {
        $(‘#slMapType‘).change(function () {
            if ($(this).val() == "1") {
                initChars(‘@Url.Content("~/package/FusionCharts/Charts/2Column3D.swf")‘);
            }
            else {
                initChars(‘@Url.Content("~/package/FusionCharts/Charts/Pie3D.swf")‘);
            }
        })
    }
</script>
<table border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td>
            图形类型:<select id="slMapType"><option value="1">柱形图</option>
                <option value="2">饼形图</option>
            </select>
        </td>
    </tr>
    <tr>
        <td id="showData">
        </td>
    </tr>
</table>

//--------------------------action----------------------------------
 public ActionResult Index()
        {
            Dictionary<string, int> data = new Dictionary<string, int>() {
                 {"香蕉",12},
                 {"橘子",55},
                 {"苹果",23},
                 {"人参果",20}
            };
            ViewData.Model = GetChartXml(data, "水果数量");
            return View();
        }

        /// <summary>
        /// 绑定图形数据
        /// </summary>
        /// <param name="dic">数据</param>
        /// <param name="Type">图形类型</param>
        /// <param name="yAxisName">柱状图显示标题</param>
        /// <returns></returns>
        private string GetChartXml(Dictionary<string, int> dic, string yAxisName)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("<chart rotateYAxisName=‘0‘ baseFont=‘微软雅黑‘ baseFontSize=‘12‘  caption=‘‘  xAxisName=‘‘ yAxisName=‘" + yAxisName + "‘ bgcolor=‘FFFFFF‘  bgalpha=‘100‘  showValues=‘1‘ formatNumberScale=‘0‘ showBorder=‘0‘>");
            foreach (string key in dic.Keys)
            {
                sb.AppendFormat("<set name=‘{0}‘ value=‘{1}‘/>", key, dic[key]);
            }
            sb.AppendFormat("</chart>");
            return sb.ToString();
        }

  

源码:http://files.cnblogs.com/NotAnEmpty/FusionCharts.rar

时间: 2024-12-24 09:25:52

FusionCharts simple demo for (html+js、APS.NET Webform、MVC)的相关文章

webpack+vue+vueRouter模块化构建小demo实例超详细步骤(附截图、代码、入门篇)

说明:本demo使用yarn代替npm指令来下载一系列依赖,有详细指令说明:使用WebStorm下Terminal来输入指令: >开始(确认已经安装node环境和yarn包管理工具) 1.新建项目文件名为vuedemo 2.yarn add init  初始化项目 >安装项目依赖 3.yarn add vue 安装最新版vue 4.yarn add webpack webpack-dev-server  安装webpack,webpack-dev-server(是一个小型的Node.js Ex

友盟消息推送安卓文档、 python端sdk、demo代码

一,友盟消息推送python服务端sdk地址和文档地址 1.sdk地址:http://dev.umeng.com/system/resources/W1siZiIsIjIwMTYvMDgvMTkvMTdfNDFfMzhfNzg2X3B1c2hfc2VydmVyX3B5c2RrLnppcCJdXQ/push-server-pysdk.zip 2.文档:http://dev.umeng.com/push/android/api-doc 二.python官方sdk代码中的错误(没错!官方代码有错.)

Node.js【4】简介、安装和配置、快速入门

笔记来自<Node.js开发指南>BYVoid编著 第1章 Node.js简介 Node.js是一个让JavaScript运行在服务端的开发平台,它让JavaScript成为脚本语言世界的一等公民,在服务端堪与PHP.Python.Perl.Ruby平起平坐. Node.js可以作为服务器向用户提供服务,与PHP.Python.RubyonRails相比,它跳过了Apache.Nginx等HTTP服务器,直接面向前端开发. Node.js还可以调用C/C++的代码,这样可以充分利用已有的诸多函

js正则表达式:验证邮箱格式、密码复杂度、手机号码、QQ号码

直接上代码 Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83

【高德地图API】从零开始学高德JS API(二)地图控件与插件——测距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨

摘要:无论是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装的一系列更加便于开发者使用,减少开发者工作量的二级API接口.除了官方通用的鱼骨.鹰眼控件,还有大量官方开发的地图插件,类似谷歌的lib.当然本文还会介绍自定义插件的使用. ------------------------------------------------------------------------------------------------- 第一部分 控件 目前官方支持的控件包含:缩放控制条-地图

【DEMO】CSS+JS实现带预览缩略图幻灯片

大二暑假某天顿悟要走的前端之路,于是在网上搜罗了一箩筐的前端入门攻略,总结出JS作为重中之重,抱着系统学习.想象能学成个人技能的心态就一句句代码跟着书上码的方式真看完<Javascript DOM编程艺术><高级程序设计JvaScript><锋利的jQuery>三本比较大热的JS的书,就是刚看完书的那段时间忙着期末考和实训,也未来得及好好梳理并实践.今天想来,也不觉得大三上整整一学期泡在图书馆的时候有多难熬,毕竟那时候生活属于一片混乱闹心,学无所成倒不至于,就是未能在那

alidoing --使用JS实现多语言框架、喜欢的请进、、瓦特平台!

大家好! 多语言实现的案例:http://alidoing.com/或者http://www.alidoing.com/ 图:切换语言界面 JS代码实现: 1.首先新建一个对象langobj,当然对象里面的属性值是可变的.比如数组[],都支持. var langobj= { "lanhelp1": "感谢:", "lanhelp2": "提供语言翻译支持!", "usernamea": "账号:&

js的动态加载、缓存、更新以及复用(二)

上一篇发出来后得到了很多回复,在此首先感谢大家的热情捧场!有的推荐第三方框架,比如 In.js.requrieJS.sea.js.lab.js等.这个开阔了眼界,以前只知道sea.js,省去了自己搜索的麻烦.也用了点时间简单看了一下,因为每一个都是大块头,都有自己的理念,如果只是简单使用的话,那么谁便找一个就可以了,但是我习惯把原理弄清楚.因为我觉得虽然不知道原理也可以使用,但是知道了原理后,可以用的更好. 主要看的是sea.js,目前简单的理解是:一个加载js的机制 + 模块化编程(CMD规范

js的动态加载、缓存、更新以及复用(一)

使用范围: OA.MIS.ERP等信息管理类的项目,暂时不考虑网站. 遇到的问题: 完成一个项目,往往需要引用很多js文件,比如jQuery.js.easyUI等.还有自己写的一些列js文件,那么这些文件如何方便的加载,如果文件有变化如何才能让客户端及时更新缓存?如果能够提高点运行效率,那就更好了. 目标: 1.  可以方便的引用js文件. 2.  尽量使用各种缓存,避免频繁从服务器读取文件. 3.  如果js文件有更新或者增加.减少几个减少js文件,需要客户端能够自动.立刻更新. 4.  Js