ASP.NET结合Echarts展示后台数据

Echarts功能强大,如果项目中需要根据后台数据生成统计图表,那么Echarts绝对是不二选择。下面就来介绍一下如何利用ASP.NET + Echarts来生成折线图、柱状图、饼图这三类基本的统计图。首先在SqlServer中建立一张测试表[TSales],该表模拟某商店在2019年每天的销售金额,共有365条记录,如下图所示:
在这里插入图片描述
下面需要按照月份对该数据表进行划分,生成相应的折线图、柱状图、饼图,同时还需要根据季度对该数据表进行划分,生成另一个饼图,如下图所示:
在这里插入图片描述

前端代码

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta charset="utf-8" />
    <title>ASP.NET + ECharts</title>
    <link href="lib/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
    <script src="lib/bootstrap/js/jquery-3.4.1.min.js"></script>
    <script src="lib/bootstrap/js/bootstrap.min.js"></script>
    <script src="lib/echarts/echarts.min.js"></script>
</head>
<body>
    <div class="container-fluid">
        <div class="row">
            <div id="aa" class="col-md-6" style="height:450px;"></div>
            <div id="bb" class="col-md-6" style="height:450px;"></div>
        </div>
        <div class="row">
            <div id="cc" class="col-md-6" style="height:450px;"></div>
            <div id="dd" class="col-md-6" style="height:450px;"></div>
        </div>
    </div>

    <script>
        $(document).ready(function () {
            $.ajax({
                type: 'post',
                url: 'ashx/QueryByMonthHandler.ashx',
                dataType: 'json',
                async: false,
                success: function (data) {
                    getLineChart(data.month, data.sales);
                    getBarChart(data.month, data.sales);
                    getPieChartByMonth(data.month, data.sales);
                }
            })

            $.ajax({
                type: 'post',
                url: 'ashx/QueryByQuarterHandler.ashx',
                dataType: 'json',
                async: false,
                success: function (data) {
                    getPieChartByQuarter(data.month, data.sales);
                }
            })
        })

        // 折线图
        function getLineChart(x, y) {
            var line = echarts.init(document.getElementById('aa'));
            line.setOption({
                title: {
                    text: '月度统计报告/折线图',
                    left: 'center'
                },
                tooltip: {},
                xAxis: {
                    name: '月份',
                    data: x
                },
                yAxis: {
                    type: 'value',
                    name: '销售金额(万元)'
                },
                series: [{
                    name: '销售金额',
                    type: 'line',
                    data: y,
                    areaStyle: {
                        normal: {
                            color: 'skyblue'
                        }
                    },
                    itemStyle: {
                        normal: {
                            color: 'skyblue',
                            lineStyle: {
                                color: 'skyblue'
                            }
                        }
                    }
                }]
            })
        }

        // 柱状图
        function getBarChart(x, y) {
            var bar = echarts.init(document.getElementById('bb'));
            bar.setOption({
                title: {
                    text: '月度统计报告/柱状图',
                    left: 'center'
                },
                color: ['greenyellow'],
                tooltip: {
                    trigger: 'axis',
                    axisPointer: {
                        type: 'line'
                    }
                },
                grid: {
                    left: '3%',
                    right: '4%',
                    bottom: '3%',
                    containLabel: true
                },
                xAxis: [
                    {
                        type: 'category',
                        name: '月份',
                        data: x,
                        axisTick: {
                            alignWithLabel: true
                        }
                    }
                ],
                yAxis: [
                    {
                        type: 'value'
                    }
                ],
                series: [
                    {
                        name: '销售金额(万元)',
                        type: 'bar',
                        barWidth: '60%',
                        data: y
                    }
                ]
            })
        }

        // 饼图——按月份
        function getPieChartByMonth(x, y) {
            var items = [];
            for (var i = 0; i < x.length; i++) {
                items.push({
                    value: y[i],
                    name: x[i]
                })
            }

            var pie = echarts.init(document.getElementById('cc'));
            pie.setOption({
                title: {
                    text: '月度统计报告/饼图',
                    left: 'center'
                },
                tooltip: {
                    trigger: 'item',
                    formatter: '{a} <br/>{b} : {c} ({d}%)'
                },
                legend: {
                    orient: 'vertical',
                    left: 'left',
                    data: x
                },
                series: [
                    {
                        name: '销售金额(万元)',
                        type: 'pie',
                        radius: '55%',
                        center: ['50%', '60%'],
                        data: items,
                        emphasis: {
                            itemStyle: {
                                shadowBlur: 10,
                                shadowOffsetX: 0,
                                shadowColor: 'rgba(0, 0, 0, 0.5)'
                            }
                        }
                    }
                ]
            })
        }
        
        // 饼图——按季度
        function getPieChartByQuarter(x, y) {
            var items = [];
            for (var i = 0; i < x.length; i++) {
                items.push({
                    value: y[i],
                    name: x[i]
                })
            }

            var pie = echarts.init(document.getElementById('dd'));
            pie.setOption({
                title: {
                    text: '季度统计报告/饼图',
                    left: 'center'
                },
                tooltip: {
                    trigger: 'item',
                    formatter: '{a} <br/>{b} : {c} ({d}%)'
                },
                legend: {
                    orient: 'vertical',
                    left: 'left',
                    data: x
                },
                series: [
                    {
                        name: '销售金额(万元)',
                        type: 'pie',
                        radius: '55%',
                        center: ['50%', '60%'],
                        data: items,
                        emphasis: {
                            itemStyle: {
                                shadowBlur: 10,
                                shadowOffsetX: 0,
                                shadowColor: 'rgba(0, 0, 0, 0.5)'
                            }
                        }
                    }
                ]
            })
        }
    </script>
</body>
</html>

后台代码

按月查询

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Web;
using Newtonsoft.Json;

namespace WebApplication1.ashx
{
    /// <summary>
    /// LineChartDataHandler 的摘要说明
    /// </summary>
    public class QueryByMonthHandler : IHttpHandler
    {

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

            // 按月查询数据
            DataTable dataTable = new DataTable();
            string sql = "select sum(Sales) as Sales from [TSales] group by datepart(mm,Time)";
            using (SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["ConnectionString"].ToString()))
            {
                adapter.Fill(dataTable);
            }

            // 月份
            List<string> month = new List<string>();
            month.AddRange(new string[] { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月" });

            // 销售额
            List<double> sales = new List<double>();
            for (int i = 0; i < dataTable.Rows.Count; i++)
            {
                DataRow dataRow = dataTable.Rows[i];
                sales.Add(double.Parse(dataRow["Sales"].ToString()));
            }

            // 返回前端数据
            var obj = new
            {
                month = month,
                sales = sales
            };
            context.Response.Write(JsonConvert.SerializeObject(obj));
        }

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

按季度查询

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Web;
using Newtonsoft.Json;


namespace WebApplication1.ashx
{
    /// <summary>
    /// QueryByQuarterHandler 的摘要说明
    /// </summary>
    public class QueryByQuarterHandler : IHttpHandler
    {

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

            // 按月查询数据
            DataTable dataTable = new DataTable();
            string sql = "select sum(Sales) as Sales from [TSales] group by datepart(mm,Time)";
            using (SqlDataAdapter adapter = new SqlDataAdapter(sql, ConfigurationManager.ConnectionStrings["ConnectionString"].ToString()))
            {
                adapter.Fill(dataTable);
            }

            // 季度
            List<string> month = new List<string>();
            month.AddRange(new string[] { "第一季度", "第二季度", "第三季度", "第四季度" });

            // 按季度分类
            double[] quarter = new double[4];
            for (int i = 0; i < dataTable.Rows.Count; i++)
            {
                DataRow dataRow = dataTable.Rows[i];
                if (i >= 0 && i <= 2)
                {
                    quarter[0] += double.Parse(dataRow["Sales"].ToString());
                }
                else if (i >= 3 && i <= 5)
                {
                    quarter[1] += double.Parse(dataRow["Sales"].ToString());
                }
                else if (i >= 6 && i <= 8)
                {
                    quarter[2] += double.Parse(dataRow["Sales"].ToString());
                }
                else
                {
                    quarter[3] += double.Parse(dataRow["Sales"].ToString());
                }
            }

            // 销售额
            List<double> sales = new List<double>();
            sales.AddRange(quarter);

            // 返回前端数据
            var obj = new
            {
                month = month,
                sales = sales
            };
            context.Response.Write(JsonConvert.SerializeObject(obj));
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
  • 13
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: ASP.NET是一种使用Microsoft技术架构创建的Web应用程序开发框架,它允许开发人员使用C#或Visual Basic等编程语言来构建动态网站和Web应用程序。而Echarts则是一个基于JavaScript的数据可视化库,能够利用图表、地图、仪表盘等各种方式来展现数据结合ASP.NETEcharts可以实现数据展示与呈现的功能,通常需要使用ASP.NET MVC或ASP.NET Web Forms等技术架构来构建网站或应用程序,并嵌入Echarts图表组件,通过数据源提供数据展示在页面上。 ASP.NET提供了强大的后端支持,能够进行数据加工、业务逻辑处理以及与数据库交互等操作,同时Echarts图表组件可以满足更多的数据可视化需求,包括折线图、柱状图、饼图、地图、仪表盘等类型,可以为数据提供更为直观、易懂的呈现方式。 通过ASP.NETEcharts结合,我们可以轻松实现数据可视化,以及数据展示和呈现的需求,同时拥有更高的可扩展性和定制化程度。这种结合关系在许多企业级应用程序、数据分析平台、大屏展示系统等领域都得到了广泛的应用。 ### 回答2: ASP.NET是一个基于微软.NET技术的web开发框架,它提供了丰富的类库和开发工具,使开发人员可以快速构建Web应用程序。而ECharts是京东数据可视化团队针对大数据可视化场景设计开发的一个开源的数据可视化库,提供了多种图表类型和丰富的交互功能,可以帮助我们更好地展示数据。 当将EChartsASP.NET结合使用时,我们可以通过引用ECharts的相关JS库和CSS文件,在ASP.NET应用程序中轻松地创建各种图表,从而使我们的数据更加直观和易于理解。此外,ECharts还提供了丰富的配置选项,我们可以自由地根据自己的需求来设置图表的各种属性。 在使用ASP.NETECharts开发数据可视化应用程序时,我们可以利用ASP.NET提供的服务器端数据处理和计算功能,通过Ajax异步请求来获取数据,并使用ECharts数据以图表形式展示出来。这种方式不仅可以快速构建Web应用程序,而且可以帮助我们更好地理解和分析数据。 总而言之,ASP.NETECharts是两个互补的技术,它们共同帮助我们快速构建数据可视化应用程序,使我们能够更好地展示和分析数据。 ### 回答3: ASP.NET是一种基于微软.NET框架的Web应用程序开发技术,而Echarts是一款流行的JavaScript可视化图表库。ASP.NET Echarts是将两者结合使用,实现在ASP.NET项目中嵌入Echarts图表的一种方法。 通过ASP.NET Echarts,可以快速搭建可视化界面,展示数据,对数据进行分析和展示ASP.NET提供了丰富的数据处理和管理功能,而Echarts则提供了丰富的图表类型和展示样式。两者的结合,使得开发者可以更加便捷地实现数据可视化,实现更高效的数据分析和应用。 ASP.NET Echarts使用简单,只需引入相关的JavaScript文件和Echarts库,即可快速实现图表的呈现和交互。同时,ASP.NET Echarts也支持动态数据绑定和交互,使得数据展示更加灵活和实用。 总之,ASP.NET Echarts是一种对ASP.NET应用程序进行数据可视化处理的有效方法。它将ASP.NETEcharts结合,简化了数据处理和可视化的开发过程,让开发者可以更加专注于数据处理与分析,实现更高效的数据可视化功能。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值