百度echarts后台交互实例

先看效果图,点击小图标可以切换柱状图和折线图。

首先要做的就是下载百度echarts的包,我下载的是echarts-2.2.7,懒得找的童鞋,可以从这里下载:http://download.csdn.net/detail/sunping177/9721547

找到build下的dist文件夹,复制里面所有文件到项目中,如下图

下面我们看一下代码

先看前台页面

AnalysisSP.aspx

AjaxEcharts.js是写好的echarts于后台交互的代码

  <div style="height: 600px;" id="main"></div>
    <script src="../Content/assets/scripts/echarts/echarts.js"></script>
    <script src="../Content/assets/scripts/echarts/AjaxEcharts.js">            </script>

在这里需要说的就是需要查询的数据,在前台页面中设置隐藏域,后台对隐藏域进行赋值

例如下面代码是需要分析的条件之一,其他就不一一列举了。

                                   <span class="input-group-addon ie_widthauto">&nbsp 现居住省份&nbsp:</span>
                                <asp:DropDownList ID="ddlProviceType" runat="server" CssClass="form-control ie_widthauto">
                                    <asp:ListItem Value="-2">全部</asp:ListItem>
                                </asp:DropDownList>
                                <input type="hidden" id="HidddlProviceTypeV" runat="server" />                                                          

下面是AjaxEcharts.js

即echarts于后台交互的代码

$(document).ready(function () {
    var myChart;
    var eCharts;
    // 路径配置
    require.config({
        paths: {
            echarts: ‘../Content/assets/scripts/echarts‘ //echarts路径
        }
    });
    // 使用
    require(
        [
            ‘echarts‘, //echarts路径
            ‘echarts/chart/bar‘, // 使用柱状图就加载bar模块,按需加载
             ‘echarts/chart/line‘ // 使用柱状图就加载bar模块,按需加载
        ], DrawEChart//异步加载的回调函数绘制图表
        );
    //创建ECharts图表方法
    function DrawEChart(ec) {
        eCharts = ec;
        myChart = eCharts.init(document.getElementById(‘main‘));
        myChart.showLoading({
            text: "图表数据正在努力加载..."
        });
        //定义图表options
        var options = {
            title: {
                text: "前台咨询登记数据分析",
                subtext: ""
            },
            tooltip: {
                trigger: "axis"
            },
            legend: {
                data: ["初始化数据"]
            },
            toolbox: {
                show: true,
                feature: {
                    mark: {
                        show: true
                    },
                    dataView: {
                        show: true,
                        readOnly: false
                    },
                    magicType: {
                        show: true,
                        type: [‘line‘, ‘bar‘]
                    },
                    restore: {
                        show: true
                    },
                    saveAsImage: {
                        show: true
                    }
                }
            },
            calculable: true,
            xAxis: [{
                type: ‘category‘,
                boundaryGap: false,
                data: [‘小学‘]
            }],
            yAxis: [{
                type: ‘value‘,
                axisLabel: {
                    formatter: ‘{value}‘
                },
                splitArea: {
                    show: true
                }
            }],
            grid: {
                width: ‘90%‘
            },

            series: [{
                name: ‘数量‘,
                type: ‘line‘,
                data: [0],//必须是Integer类型的,String计算平均值会出错
                markPoint: {
                    data: [{
                        type: ‘max‘,
                        name: ‘最大值‘
                    }, {
                        type: ‘min‘,
                        name: ‘最小值‘
                    }]
                },
                markLine: {
                    data: [{
                        type: ‘average‘,
                        name: ‘平均值‘
                    }]
                }
            }]
        };
        myChart.setOption(options); //先把可选项注入myChart中
        myChart.hideLoading();
        getChartData();//aja后台交互
    }
    function getChartData() {
        //获得图表的options对象
        var options = myChart.getOption();
        var hopeAnalyV = $("#hidhopeAnalyV").val();
        var hopeAnaly = $("#hidhopeAnaly").val();
        var ddlBranchV = $("#hidDDLBranchV").val();
        var ddlInfoSourceV = $("#HidddlInfoSourceV").val();
        var ddlCousultListV = $("#HidddlCousultListV").val();
        var brlCountryPartRadV = $("#HidbrlCountryPartRadV").val();

        var ddlAllRecordDepListV = $("#HidddlAllRecordDepListV").val();
        var ddlProviceTypeV = $("#HidddlProviceTypeV").val();
        var rblAllDeptRadV = $("#HidrblAllDeptRadV").val();

        var HidtxtBeginDate = $("#HidtxtBeginDate").val();
        var HidtxtEndDate = $("#HidtxtEndDate").val();

        var HidddlHopCountry = escape($("#HidddlHopCountry").val());
        var HidddlCountryGroup = escape($("#HidddlCountryGroup").val());
        var HidddlCurrentDegree = escape($("#HidddlCurrentDegree").val());
        var HidddlHopeDegree = escape($("#HidddlHopeDegree").val());
        var HidddlProvice = escape($("#HidddlProvice").val());
        //请求的参数

        if (hopeAnaly != "") {
            //通过Ajax获取数据
            $.ajax({
                type: "post",
                async: false, //同步执行
                url: "../Handler/EchartsData.ashx",
                data: {
                    hopeAnalyV: hopeAnalyV,
                    ddlBranchV: ddlBranchV,
                    ddlInfoSourceV: ddlInfoSourceV,
                    ddlCousultListV: ddlCousultListV,
                    brlCountryPartRadV: brlCountryPartRadV,
                    ddlAllRecordDepListV: ddlAllRecordDepListV,
                    ddlProviceTypeV: ddlProviceTypeV,
                    rblAllDeptRadV: rblAllDeptRadV,
                    HidtxtBeginDate: HidtxtBeginDate,
                    HidtxtEndDate: HidtxtEndDate,
                    HidddlHopCountry: HidddlHopCountry,

                    HidddlCountryGroup: HidddlCountryGroup,
                    HidddlCurrentDegree: HidddlCurrentDegree,
                    HidddlHopeDegree: HidddlHopeDegree,
                    HidddlProvice: HidddlProvice
                },
                dataType: "json",//返回数据形式为json
                success: function (result) {
                    var xxlist = [];
                    var yylist = [];
                    for (var i = 0; i < result.length; i++) {
                        if (result[i].x == "") {
                            var patxx = "空";
                        } else if (result[i].x == null) {
                            var patxx = "NULL";
                        }
                        else {
                            var patxx = result[i].x;
                        }
                        var patyy = result[i].y;
                        xxlist.push(patxx);
                        yylist.push({ value: patyy, name: patxx });
                    }
                    var hpAnaly = [];
                    if (hopeAnaly != "") {
                        hpAnaly.push(hopeAnaly);
                    }
                    if (result) {
                        options.legend.data = hpAnaly;//lengend赋值数据
                        options.xAxis[0].data = xxlist;//x轴赋值数据
                        options.series[0].data = yylist;//y轴赋值数据
                        myChart.hideLoading();
                        myChart.setOption(options);
                    }
                },
                error: function (errorMsg) {
                    alert("查询数据结果为空!");
                    myChart.hideLoading();
                }
            });
        }
    }
});

echarts获取的json数据,就是从后台一般处理程序中获取的。

关键代码是

context.Response.Write(new JavaScriptSerializer().Serialize(list));

下面来看一般处理程序,这里传入参数很多,请自动忽略

参数中如果有传入的汉字为乱码时,可以使用标记为汉字的方法context.Server.UrlDecode()

EchartsData.ashx.cs

 public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";

            #region 参数
            string hopeAnalyV = context.Request["hopeAnalyV"];
            string ddlBranchV = context.Request["ddlBranchV"];
            string ddlInfoSourceV = context.Request["ddlInfoSourceV"];
            string ddlCousultListV = context.Request["ddlCousultListV"];
            string brlCountryPartRadV = context.Request["brlCountryPartRadV"];
            string ddlAllRecordDepListV = context.Request["ddlAllRecordDepListV"];
            string ddlProviceTypeV = context.Request["ddlProviceTypeV"];
            string rblAllDeptRadV = context.Request["rblAllDeptRadV"];
            string HidtxtBeginDate = context.Request["HidtxtBeginDate"];
            string HidtxtEndDate = context.Request["HidtxtEndDate"];

            //汉字
            string HidddlHopCountry = context.Server.UrlDecode(context.Request["HidddlHopCountry"]);
            string HidddlCountryGroup = context.Server.UrlDecode(context.Request["HidddlCountryGroup"]);
            string HidddlCurrentDegree = context.Server.UrlDecode(context.Request["HidddlCurrentDegree"]);
            string HidddlHopeDegree = context.Server.UrlDecode(context.Request["HidddlHopeDegree"]);
            string HidddlProvice = context.Server.UrlDecode(context.Request["HidddlProvice"]);
            #endregion
            string userid = context.Request.Cookies["userid"].Value;
            #region PowerStr
            var powerDept = DB.Context.From<Model.tblRecepPower>()
             .Select(a => a.DepartmentID)
             .Where(a => a.IsPower == 1 && a.UserID == int.Parse(userid))
             .ToList();
            string PowerStr = string.Empty;
            if (powerDept.Count > 0)
            {
                PowerStr = "and DepartmentID in (select DepartmentID from tblRecepPower  where IsPower=1 and UserID=" + userid + ")";
            }
            else
            {
                PowerStr = "";
            }

            #endregion
            #region branchid
            int userBranchid = 0;
            string userBranchName = string.Empty;
            var branchlist = DB.Context.From<Model.view_Member>()
                .Select(a => new { a.BranchID, a.BranchName })
                .Where(a => a.id == int.Parse(userid))
                .ToList();
            foreach (var item in branchlist)
            {
                userBranchid = item.BranchID;
                userBranchName = item.BranchName;
            }
            #endregion

            #region UserBranchStr
            string UserBranchStr = string.Empty;
            string ss = ddlBranchV;
            if (string.IsNullOrEmpty(ss) || ss == "-1")
            {
                UserBranchStr = "and ( BranchID in(select BranchID from tblUserBranch where Flag=1 and FuncID=2 and UserID=" + userid + ")or BranchID=0 )";
            }
            else
            {
                UserBranchStr = "and BranchID =" + ss;
            }
            #endregion
            string AnalysisTable = "view_recepinfopart";
            string strSql = string.Empty;
            if (hopeAnalyV == "HopeCountry" || hopeAnalyV == "GroupName")
            {
                AnalysisTable = "view_RecepInfoCountry";
            }

            strSql = "SELECT  count(RecepId) as y ," + hopeAnalyV + " as x";
            strSql += " from " + AnalysisTable + " where IsShow=1 " + PowerStr + UserBranchStr;
            if (HidtxtBeginDate != "" && HidtxtEndDate == "")
            {
                strSql = strSql + " and Datediff([day],RecordDate,‘" + HidtxtBeginDate + "‘)=0 ";
            }
            else if (HidtxtBeginDate == "" && HidtxtEndDate != "")
            {
                strSql = strSql + " and  Datediff([day],RecordDate,‘" + HidtxtBeginDate + "‘)=0 ";
            }
            else if (!string.IsNullOrEmpty(HidtxtBeginDate) && !string.IsNullOrEmpty(HidtxtEndDate))
            {
                strSql = strSql + " and RecordDate>=‘" + HidtxtBeginDate + " 0:00:00‘ and RecordDate<=‘" + HidtxtEndDate + " 23:59:59‘ ";
            }
            if (HidddlHopCountry != "全部")
            {
                strSql = strSql + " and (RecepId in(select RecepId from tblRecepHopeCountry where HopeCountry=‘" + HidddlHopCountry + "‘))";
            }
            if (HidddlCountryGroup != "全部")
            {
                strSql = strSql + " and (RecepId in(select RecepId from view_RecepHopeCountry where GroupName=‘" + HidddlCountryGroup + "‘))";
            }
            if (HidddlCurrentDegree != "全部")
            {
                strSql = strSql + " and CourrentDegree=‘" + HidddlCurrentDegree + "‘";
            }
            if (HidddlHopeDegree != "全部")
            {
                strSql = strSql + " and HopeDegree=‘" + HidddlHopeDegree + "‘";
            }
            if (brlCountryPartRadV == "1")
            {
                if (HidddlProvice != "全部")
                {
                    strSql = strSql + " and Provice=‘" + HidddlProvice + "‘";
                }
            }
            else
            {
                if (ddlProviceTypeV != "-2")
                {
                    strSql = strSql + " and ProviceType=‘" + ddlProviceTypeV + "‘";
                }
            }
            if (rblAllDeptRadV=="1")
            {
                if (ddlAllRecordDepListV!="-2")
                {
                      strSql = strSql + " and RecordName=‘" +ddlAllRecordDepListV+ "‘";
                }
            }
            if (ddlCousultListV != "-2")//咨询类型
            {
                strSql = strSql + " and ConsultType=" + ddlCousultListV + "";
            }
            if (ddlInfoSourceV != "-2")//咨询信息来源
            {
                strSql = strSql + " and (AttainInfoType=" +ddlInfoSourceV + "  or AttainInfoType=10)";
            }
            string orderbyStr = string.Empty;
            if (hopeAnalyV== "HopeCountry")
            {
                orderbyStr = " order by HopeCountry";
            }
            else if (hopeAnalyV == "GroupName")
            {
                orderbyStr = " order by GroupName";
            }
            else if (hopeAnalyV == "BranchName")
            {
                orderbyStr = " order by BranchName";
            }
            else
            {
                orderbyStr = " order by count(RecepId) desc";
            }
            strSql += " group by " + hopeAnalyV;
            strSql += orderbyStr;

            if (hopeAnalyV == "HopeCountry" || hopeAnalyV == "GroupName")
            {
                var analyList = DB.Context.FromSql(strSql).ToList<Model.view_RecepInfoCountry>();
                var list = new List<object>();
                if (analyList.Count > 0)
                {
                    foreach (Model.view_RecepInfoCountry recpf in analyList)
                    {
                        var obj = new { x = recpf.x, y = recpf.y };
                        list.Add(obj);
                    }
                    context.Response.Write(new JavaScriptSerializer().Serialize(list));
                }
            }
            else
            {
                var analyList = DB.Context.FromSql(strSql).ToList<Model.view_Recepinfopart>();
                var list = new List<object>();
                if (analyList.Count > 0)
                {
                    foreach (Model.view_Recepinfopart recpf in analyList)
                    {
                        var obj = new { x = recpf.x, y = recpf.y };
                        list.Add(obj);
                    }
                    context.Response.Write(new JavaScriptSerializer().Serialize(list));
                }
            }

        }

==============我是结束线==================

关于echarts捣鼓了好久终于成功了,以此文勉励一下自己。也给有需要的童鞋提供方便。如有哪里不懂或我没有写清楚的地方,可以在下方留言,我看到后会第一时间回复,谢谢。

时间: 2024-10-02 18:49:29

百度echarts后台交互实例的相关文章

ECharts 与struts的后台交互之柱状图

ECharts主页:  http://echarts.baidu.com/index.html ECharts-2.1.8下载地址:  http://echarts.baidu.com/build/echarts-2.1.8.zip ECharts官方实例:  http://echarts.baidu.com/doc/example.html ECharts官方API文档:  http://echarts.baidu.com/doc/doc.html 1.ECharts是百度的开源项目,在其官网

使用百度echarts画图表的步骤

1.百度echarts是一个很好用的图表工具,可以将一些数据很形象直观的展示出来,下面看一下简单的使用. 2.首先引用echarts.js 具体文档可以参考官网: http://echarts.baidu.com/tutorial.html 里面讲的很详细.而且官网也有很多的实例供我们参考. 3.引入echarts之后需要一个容器: 1)准备容器 这个容器就是将我们的数据在里面展示出来. 2)初始化echarts实例: var myCharts =  echarts.init(document.

百度ECharts数据绑定诀窍

百度Echarts的功能还是蛮好用的.. 不能说多好但是也不次.. 下边就分享一些数据绑定经验..对在处理过程中的思路有一些帮助... 报表里用的最多的可以说是 饼状图和柱形图.. 饼状图里当然是包括环形图..还有所谓的玫瑰饼图... 柱形图里包括了曲线图..条状图等..只是展现形式不一样而已.. 那么有没有可能这些报表都在后台统一查询统计..同样格式的数据输出到前台..自由根据类别显示数据呢.. 我们说数据查询之后的结果.. -------------分割线--------------- 时间

前端与后台交互所需技术

1.前端请求数据URL的谁来写? 在开发中,URL主要是由后台来写,写好了之后再给前端开发者. 如果后台在查询数据,需要借助查询条件才能查询到前端需要的数据时,这时后台会要求前端提供相关的查询参数:如: select "产品图片","优惠[买2送花茶]","产品名称","商品价格","是否包邮" from tb_goodList where time = "传递过来的参数" 如果没有后面

微信小程序实战,与后台交互

index.wxml <view class="container"> <text>{{txt}}</text> <input name="name" type="text" id='text' bindchange="xyz"/> <button id="btn" bindtap="abc" >提交</button>

Android客户端与PC服务器通过socket进行交互实例(转)

一直以来对Android socket通信都很模糊,今天终于研究了一个网上的例子,自己又修改了下,算是对Android socket通信有点了解了. 下面是具体的代码,说明都在注释中了.需要注意的是,只有客户端发送了信息给服务器后,服务器才能响应客户端的输入,然后返回信息给客户端,这是客户端才能读取服务器返回的信息.如果客户端和服务器都处于等待对方的信息,那样就会造成阻塞,导致ANR了. 1.服务器端代码,就是一个java程序,与android无关,运行于服务器上,即PC机上. [java] v

通过ajax前端后台交互/登录页和注册页前端后台交互详解/前端后台交互基础应用/几个后台函数的基础应用/php文件函数基础应用/php字符传函数基础应用/php数组函数基础应用

  前  言  PHP     学习了好久的PHP,今天做一个可以后台交互的登录页和注册页,没做什么判断,简单的了解一下. 具体的内容分析如下: ① PHP中的数据传输-->>由注册页传输给注册页后台-->>注册页后台经过转码保存实例化的文件 ② 在登录页输入账户密码,点击登录时,获得触发函数:获得由后台传输过来的true或者false---转换页面或者弹出输入错误.    登录页后台获取保存账户密码的实例化文件,通过转码,if判断之后传输给前台登录页TURE或者FALSE. 总共

利用ajax与后台交互容易出现的问题及解决办法

Ajax在当今的前后台交互中可以说是很火的.那么在使用ajax与后台交互的过程中我们会遇到哪些小问题呢. 使用get方法的时候: 1.浏览器的缓存问题:当我们多次访问同一个地址的时候,浏览器不会每次都更新地址,而是将第一次访问到的数据缓存起来,后面访问同样地址的时候直接从缓存中获取数据,而不会从服务器中读取数据,因此如果我们改变后台中的数据,我们访问时数据将不会更新,访问到的数据也不会改变.如何解决这个问题呢?这时我们可以在"url?"后面用"&"符号连接一

在百度echarts中添加标识线markLine

在百度echarts中添加标识线,打开以下网址复制代码到输入框,绘制一条直线. http://echarts.baidu.com/echarts2/doc/example/line3.html option = { title : { text: '某楼盘销售情况', subtext: '纯属虚构' }, tooltip : { trigger: 'axis' }, legend: { data:['意向','预购','成交'] }, toolbox: { show : true, featur