zoukankan      html  css  js  c++  java
  • FusionCharts Free(二)使用方法详细解析

    有的朋友说CFC功能简单,毕竟免费版的。关于商业版(破解),需要$4999,价格不菲啊,回头介绍吧。

    说白了,使用FusionCharts就是三步。1、生成XML数据源。2、引入FusionCharts组件。3、将XML关联到组件。简单吧,附上Demo

    一、生成XML数据源。

         (1)手动创建静态文件。

                比如:

                

                <?xml version="1.0" encoding="utf-8" ?>
                <graph caption='每月销售额柱形图' xAxisName='月份' yAxisName='Units' showNames='1' decimalPrecision='0' formatNumberScale='0' >
                <set name='一月' value='462' color='AFD8F8'/>
                <set name='二月' value='857' color='F6BD0F'/>
                <set name='三月' value='671' color='8BBA00'/>
                <set name='四月' value='404' color='FF8E46'/>
                <set name='五月' value='761' color='008E8E'/>
                <set name='六月' value='960' color='D64646'/>
                <set name='七月' value='629' color='8E468E'/>
                <set name='八月' value='622' color='588526'/>
                <set name='九月' value='376' color='B3AA00'/>
                <set name='十月' value='494' color='008ED6'/>
                <set name='十一月' value='761' color='9D080D'/>
                <set name='十二月' value='960' color='A186BE'/>
                </graph>

          (2) C#创建XML文件,使用XmlHelper类

                 

     #region 依据匹配XPath表达式的第一个节点来创建它的子节点(如果此节点已存在则追加一个新的同名节点
            /// <summary>
            /// 依据匹配XPath表达式的第一个节点来创建它的子节点(如果此节点已存在则追加一个新的同名节点
            /// </summary>
            /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>
            /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param>
            /// <param name="xmlNodeName">要匹配xmlNodeName的节点名称</param>
            /// <param name="innerText">节点文本值</param>
            /// <param name="xmlAttributeName">要匹配xmlAttributeName的属性名称</param>
            /// <param name="value">属性值</param>
            /// <returns>成功返回true,失败返回false</returns>
            public static bool CreateXmlNodeByXPath(string xmlFileName, string xpath, string xmlNodeName, string innerText, string xmlAttributeName, string value)
            {
                bool isSuccess = false;
                XmlDocument xmlDoc = new XmlDocument();
                try
                {
                    xmlDoc.Load(xmlFileName); //加载XML文档
                    XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath);
                    if (xmlNode != null)
                    {
                        //存不存在此节点都创建
                        XmlElement subElement = xmlDoc.CreateElement(xmlNodeName);
                        subElement.InnerXml = innerText;

                        //如果属性和值参数都不为空则在此新节点上新增属性
                        if (!string.IsNullOrEmpty(xmlAttributeName) && !string.IsNullOrEmpty(value))
                        {
                            XmlAttribute xmlAttribute = xmlDoc.CreateAttribute(xmlAttributeName);
                            xmlAttribute.Value = value;
                            subElement.Attributes.Append(xmlAttribute);
                        }

                        xmlNode.AppendChild(subElement);
                    }
                    xmlDoc.Save(xmlFileName); //保存到XML文档
                    isSuccess = true;
                }
                catch (Exception ex)
                {
                    throw ex; //这里可以定义你自己的异常处理
                }
                return isSuccess;
            }
            #endregion

           这只是这个类的一个方法,当然您也可以自己写。关于这个类,后面的文章会介绍到。

         

         (3)用“ashx”文件输出XML字符串

           

    /// <summary>
        /// PushXML 的摘要说明
        /// </summary>
        public class PushXML : IHttpHandler
        {

            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/xml";
                StringBuilder str = new StringBuilder();
                str.Append("<?xml version='1.0' encoding='utf-8'?><graph caption='XXXXXX统计' subcaption='(从 8/6/2009 to 8/12/2009)' lineThickness='1' showValues='0' formatNumberScale='0' anchorRadius='2' divLineAlpha='20' divLineColor='CC3300' divLineIsDashed='1' showAlternateHGridColor='1' alternateHGridAlpha='5' alternateHGridColor='CC3300' shadowAlpha='40' labelStep='1' numvdivlines='5' chartRightMargin='35' bgColor='FFFFFF,CC3300' bgAngle='270' bgAlpha='10,10' xAxisName='月份' yAxisName='销售额' rotateYAxisName='0' baseFont='Arial' baseFontSize='13'>");
                str.Append("<categories>");
                str.Append("<category label='8/6/2006' />");
                str.Append("<category label='8/7/2006' />");
                str.Append("<category label='8/8/2006' />");
                str.Append("<category label='8/9/2006' />");
                str.Append("<category label='8/10/2006' />");
                str.Append("<category label='8/11/2006' />");
                str.Append("<category label='8/12/2006' />");
                str.Append("</categories>");
                str.Append("<dataset seriesName='测试1' color='1D8BD1' anchorBorderColor='1D8BD1' anchorBgColor='1D8BD1'>");
                str.Append("<set value='1327' />");
                str.Append("<set value='1826' />");
                str.Append("<set value='1699' />");
                str.Append("<set value='1511' />");
                str.Append("<set value='1904' />");
                str.Append("<set value='1957' />");
                str.Append("<set value='1296' />");
                str.Append("</dataset>");
                str.Append("</graph>");
                context.Response.ContentEncoding = Encoding.GetEncoding("GB2312");
                context.Response.Write(str.ToString());
            }

            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }

       

     二、引入FCF插件

           (1)“object”引入

                  

     <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="600" height="500" id="Pie3D">
            <param name="movie"  value="FusionCharts/FCF_Pie3D.swf" />
            <param name="FlashVars" value="&dataURL=Data.xml&chartWidth=600&chartHeight=500" />
            <param name="quality" value="high" />
            <embed  src="FusionCharts/FCF_Pie3D.swf" flashVars="&dataURL=Data.xml&chartWidth=600&chartHeight=500" quality="high" width="600" height="500" name="Column3D" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"/>
        </object>

       

         (2)js引入

            

    <head>
        <title>多图形</title>
        <script src="FusionCharts/FusionCharts.js" type="text/javascript"></script>
    </head>
    <body bgcolor="#ffffff">
        <div id="chartdiv1" align="center">
        First Chart Container Pie 3D   
        </div>
       <script type="text/javascript">
           var myChart1 = new FusionCharts("FusionCharts/FCF_pie3D.swf", "myChartId1", "600", "400");
           myChart1.setDataURL("Data.xml");
           myChart1.render("chartdiv1");
       </script>

    </body>

         (3)Jquery、ajax异步请求

              

    <head runat="server">
        <title></title>
        <script src="FusionCharts/FusionCharts.js" type="text/javascript"></script>
        <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
      <script type="text/javascript">

          $.ajax({ url: "Default.aspx", data: { 'nocache': Math.random() }, timeout: 50000, success: function (text) {
              var myChart1 = new FusionCharts("FusionCharts/FCF_Column3D.swf", "myChartId", "600", "350");

              myChart1.setDataXML(text);
              myChart1.render("chartDiv");
          }
          });
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <div id="chartDiv" style=" text-align:center"></div>
        </div>
          
        </form>
    </body>
    </html>

      

    (三)将XML关联到插件

           (1)setDataURL。

                  这种情况是在知道XML路径的时候使用的。 当然,“ashx”文件路径也可以,因为在它里面存储的也是xml格式文本,虽然是动态的。

    <script type="text/javascript">
            var myChart = new FusionCharts("FusionCharts/FCF_MSLine.swf", "myChartId", "800", "300");
            myChart.setDataURL("PushXML.ashx");
            myChart.render("chartdiv");
        </script>

           (2)setDataXML。

                  直接指定xml字符串:

                  

    <script type="text/javascript">
           var myChart = new FusionCharts("FusionCharts/FCF_Column3D.swf", "myChartId", "600", "500");
           myChart.setDataXML("<graph caption='每月销售额柱形图' xAxisName='月份' yAxisName='Units' showNames='1' decimalPrecision='0' formatNumberScale='0' ><set name='一月' value='462' color='AFD8F8'/><set name='二月' value='857' color='F6BD0F'/><set name='三月' value='671' color='8BBA00'/><set name='四月' value='404' color='FF8E46'/><set name='五月' value='761' color='008E8E'/><set name='六月' value='960' color='D64646'/><set name='七月' value='629' color='8E468E'/><set name='八月' value='622' color='588526'/><set name='九月' value='376' color='B3AA00'/><set name='十月' value='494' color='008ED6'/><set name='十一月' value='761' color='9D080D'/><set name='十二月' value='960' color='A186BE'/></graph>")
           myChart.render("chartdiv");
       </script>

       

          C#后台输出:

          

     protected void Page_Load(object sender, EventArgs e)
            {
                if (Request["nocache"] != null)
                {
                    Response.Clear();
                    string ds = File.ReadAllText(Server.MapPath("data.xml"), Encoding.GetEncoding("gb2312"));
                    Response.Write(ds);
                    Response.End();
                }
            }

          在这一节中,详细的介绍了使用CFC的三个步骤,主要是结合asp.net(C#)介绍的。下一节将介绍一下,FusionCharts中的一些参数设置和注意事项,您是不是在为了那么多的参数配置而烦恼。关于下一节FC的参数和注意事项,园子里有资料可以参考,想在其基础上完善一下。

           

           想整一个空间,帮忙点击一下,加一分吧。

                  

  • 相关阅读:
    什么叫委托
    什么是继承
    什么叫多态
    委托的了解
    什么是数组
    工作记录之 oracle去重的三个方法
    实例分析J2ME网络编程的两种方法
    在无线J2ME设备上实现超文本传输协议
    java与C、C++进行通信的一些问题
    如何配置Wiindows live writer
  • 原文地址:https://www.cnblogs.com/ssol/p/2265366.html
Copyright © 2011-2022 走看看