美文网首页web开发程序员
阿里云G2图表+Sqlserver+Asp.net MVC 开发

阿里云G2图表+Sqlserver+Asp.net MVC 开发

作者: Hubert_Biyo | 来源:发表于2017-09-06 16:24 被阅读51次

    1、何为G2:
      G2 (The Grammar Of Graphics) 是一个由纯 JavaScript 编写、强大的语义化图表生成工具,它提供了一整套图形语法,可以让用户通过简单的语法搭建出无数种图表,并且集成了大量的统计工具,支持多种坐标系绘制,可以让用户自由地定制图表,是为大数据时代而准备的强大的可视化工具。

    2、G2图表简单的例子:
      阿里云用demo 地址为:https://antv.alipay.com/g2/doc

    3、G2数据由sqlserver提供,通过ashx一般处理程序+ajax获取数据库中的数据并转换为json数据,供G2使用,展示出图表

    页面显示代码:

    @{
        Layout = "";
    }
    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="utf-8">
        <script src="/Scripts/jquery-1.10.2.min.js" type="text/javascript"></script>
        <!-- 引入在线资源 -->
        <script src="https://a.alipayobjects.com/g/datavis/g2/2.3.9/index.js"></script>
    </head>
    <body>
        <div id="c1"></div>
        <script type="text/javascript">
            $.ajax({
                type: "post",
                async: true,
                url: "/GetSqlJYSum.ashx",
                data: { cmd: "test" },//发送到服务器的参数
                datatype: "json",
                success: function (result) {
                    //alert("执行ajax方法");
                    if (result) {
                        //alert(result);
                        var data = JSON.parse(result);
                        var chart = new G2.Chart({
                            id: 'c1', // 指定图表容器 ID
                            width: 600, // 指定图表宽度
                            height: 300, // 指定图表高度
                            plotCfg: {
                                margin: [50, 50, 80, 100]   //上右下左
                            }
                        });
                        // Step 2: 载入数据源,定义列信息
                        chart.source(data, {
                            Month: {
                                alias: '年份' // 列定义,定义该属性显示的别名
                            },
                            Num: {
                                alias: '数量'
                            }
                        });
                        // Step 3:创建图形语法,绘制柱状图,由 genre 和 sold 两个属性决定图形位置,genre 映射至 x 轴,sold 映射至 y 轴
                        chart.interval().position('Month*Num').color('Month')
                        // Step 4: 渲染图表
                        chart.render();
                    }
                },
                error: function (errorMsg) {
                    alert("request data failed!!!");
                }
            });
        </script>
    </body>
    </html>
    

    一般处理程序代码如下:

    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Web;
    using System.Web.Script.Serialization;
    
    namespace MVCG2Demo
    {
        /// <summary>
        /// GetSqlJYSum 的摘要说明
        /// </summary>
        public class GetSqlJYSum : IHttpHandler
        {
    
            //设置数据库连接
            public static string con = ConfigurationManager.AppSettings["ConnectionEduString"];
    
            DataSet ds = new DataSet();
            SqlDataAdapter adapter = new SqlDataAdapter();
            JavaScriptSerializer jsS = new JavaScriptSerializer();
            List<object> lists = new List<object>();
            //SeriesseriesObj=newSeries();
            string result = "";
    
    
            public void ProcessRequest(HttpContext context)
            {
                //获取一同发送过来的参数
                //stringcommand=context.Request["cmd"];
                context.Response.ContentType = "text/plain";
                //用来传回去的内容
                //context.Response.Write("HelloWorld");
                Get_Data01(context);
            }
            public void Get_Data01(HttpContext context)
            {
                string sql = @"SELECT LEFT ( b.zhanhuiname , 4 )    AS zhanhuiname ,
            COUNT(*) AS SignUpSum
    FROM    zhanhuiguanlian a
            INNER JOIN dbo.zhanhui b ON a.zhanhuiid = b.ID
    GROUP BY b.zhanhuiname
    ORDER BY b.zhanhuiname";
                ds = GetDataFromDatabase(sql);
                lists = new List<object>();
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    var obj = new { Month = dr["zhanhuiname"], Num = dr["SignUpSum"] };
                    lists.Add(obj);
                }
                jsS = new JavaScriptSerializer();
                result = jsS.Serialize(lists);
                context.Response.Write(result);
            }
    
    
            public DataSet GetDataFromDatabase(string sql)
            {
                ds = new DataSet();
                adapter = new SqlDataAdapter(sql, con);
                adapter.Fill(ds);
                return ds;
            }
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    }
    

    4、如图

    用G2形成的图表

    4、G2图表KPI文档:https://antv.alipay.com/g2/api/index.html

    相关文章

      网友评论

        本文标题:阿里云G2图表+Sqlserver+Asp.net MVC 开发

        本文链接:https://www.haomeiwen.com/subject/ielvjxtx.html