C#+JQuery+.Ashx+百度Echarts实现全国省市地图和饼状图动态数据图形报表的统计
在目前的一个项目中,需要用到报表表现数据,这些数据有多个维度,需要同时表现出来,同时可能会有大量数据呈现的需求,经过几轮挑选,最终选择了百度的echarts作为报表基础类库。echarts功能强大,界面优美。由于客户是淘宝卖家,因此想要实现每个月全国各个省份各自购力如何,大家可以统计其他的,如果GDP 人口 等等。
百度echarts简介请参考
http://echarts.coding.io/doc/example.html
效果图如下:全部是动态数据
JS代码:
<!-- Charts Layout Stylesheet -->
<link href="assets/css/echartsHome.css" rel="stylesheet"/>
<script src="assets/js/esl.js"></script>
<script src="assets/js/codemirror.js"></script>
HTML代码:(放在中间呈现)
1.
<div id=
"mapPieCharts"
class
=
"main"
></div>
<script src="assets/js/jquery-1.8.2.min.js"></script>
<script src="assets/js/echarts-map.js"></script>
<script src="assets/js/EchartsJson.js"></script>
EchartsJson JS里面的代码如下:
001.
function needMap() {
002.
var href = location.href;
003.
return
href.indexOf(
'map'
) != -
1
004.
|| href.indexOf(
'mix3'
) != -
1
005.
|| href.indexOf(
'mix5'
) != -
1
006.
|| href.indexOf(
'dataRange'
) != -
1
;
007.
008.
}
009.
010.
var fileLocation = needMap() ?
'assets/js/echarts-map'
:
'assets/js/echarts'
;
011.
require.config({
012.
paths: {
013.
echarts: fileLocation,
'echarts/assets/js/pie'
: fileLocation,
014.
'echarts/assets/js/map'
: fileLocation,
015.
}
016.
});
017.
018.
require(
019.
[
020.
'echarts'
,
'echarts/chart/pie'
,needMap() ?
'echarts/chart/map'
:
'echarts'
021.
],
022.
DrawCharts
023.
);
024.
function DrawCharts(ec) {
025.
FunDraw1(ec);
026.
}
027.
028.
function FunDraw1(ec) {
029.
//---地图饼状图 ---
030.
var mapChart = ec.init(document.getElementById(
'mapPieCharts'
));
031.
mapChart.showLoading({text:
"加载中...请等待"
});
032.
mapChart.hideLoading();
033.
var seriesMapData;
034.
var seriesPieData;
035.
var legendData;
036.
$.ajax({
037.
type:
"post"
,
038.
async:
false
,
//同步执行
039.
url:
"SearchHandler.ashx?MapPieType=MapPieChart"
,
040.
dataType:
"json"
,
041.
success: function (result) {
042.
seriesMapData = eval(
'('
+ result.split(
'_'
)[
0
] +
')'
);
043.
seriesPieData = eval(
'('
+ result.split(
'_'
)[
1
] +
')'
);
044.
legendData = eval(
'('
+ result.split(
'_'
)[
2
] +
')'
);
045.
},
046.
error: function (errorMsg) {
047.
alert(
"全国各省份订单销售量统计数据请求失败。"
);
048.
}
049.
});
050.
mapChart.setOption({
051.
title: {
052.
text:
new
Date().getFullYear() +
'全国各省份订单销售量统计(月/单)'
,
053.
subtext:
'数据来自WMS统计'
054.
},
055.
tooltip: {
056.
trigger:
'item'
057.
},
058.
legend: {
059.
x:
'right'
,
060.
selectedMode:
false
,
061.
data: legendData
062.
},
063.
dataRange: {
064.
orient:
'horizontal'
,
065.
min:
0
,
066.
max:
200
,
067.
text: [
'购买力强'
,
'低'
],
068.
splitNumber:
0
,
069.
color: [
'orangered'
,
'yellow'
,
'lightskyblue'
]
070.
},
071.
animation:
false
,
072.
series: [
073.
{
074.
name:
new
Date().getFullYear() +
'全国各省份订单销售量'
,
075.
type:
'map'
,
076.
mapType:
'china'
,
077.
mapLocation: {x:
'left'
},
078.
selectedMode:
'multiple'
,
079.
itemStyle: {
080.
normal: { label: { show:
true
} },
081.
emphasis: { label: { show:
true
} }
082.
},
083.
data: seriesMapData
084.
},
085.
{
086.
name:
new
Date().getFullYear() +
'全国各省份订单销售量'
,
087.
type:
'pie'
,
088.
roseType:
'area'
,
089.
tooltip: {
090.
trigger:
'item'
,
091.
formatter:
"{a} <br />{b} : {c} ({d}%)"
092.
},
093.
center: [document.getElementById(
'mapPieCharts'
).offsetWidth -
250
,
225
],
094.
radius: [
30
,
120
],
095.
data: seriesPieData
096.
}
097.
]
098.
});
099.
100.
}
C#代码如下:
01.
#region
// 地图和饼状图组合查询
02.
if
(!string.IsNullOrEmpty(context.Request[
"MapPieType"
]))
03.
{
04.
//图例名称
05.
var legend = string.Empty;
06.
//饼状图数据 省份及统计的数据
07.
StringBuilder sbPieData =
new
StringBuilder();
08.
sbPieData.Append(
"["
);
09.
//地图数据 省份及统计的数据
10.
StringBuilder sbMapData =
new
StringBuilder();
11.
sbMapData.Append(
"["
);
12.
13.
using (PortalSearchDataContext db =
new
PortalSearchDataContext())
14.
{
15.
List<SeriesMapPieData> getMapPieDataList =
16.
(from province in
17.
(
18.
(from t in db.DOC_Order_Header
19.
where
20.
t.C_Address1 !=
""
&& t.SOStatus ==
"99"
&&
21.
t.OrderTime >= startMonth.Date.Date && t.OrderTime
22.
<= DateTime.Parse(endMonth.Date.ToString(
"yyyy-MM-dd 23:59"
))
23.
group t by
new
24.
{
25.
t.C_Address1,
26.
t.OrderTime
27.
} into g
28.
select
new
29.
{
30.
ProName = g.Key.C_Address1.Substring(
0
,
3
).Replace(
"省"
,
""
).Replace(
"壮"
,
""
)
31.
.Replace(
"回"
,
""
).Replace(
"维"
,
""
),
32.
Number = g.Count(),
33.
OrderTime = g.Key.OrderTime
34.
}))
35.
group province by
new
36.
{
37.
province.ProName
38.
} into g
39.
orderby
40.
g.Sum(p => p.Number)
41.
select
new
SeriesMapPieData
42.
{
43.
name = g.Key.ProName,
44.
value = g.Sum(p => p.Number)
45.
}).ToList<SeriesMapPieData>();
46.
for
(
int
i =
0
; i < getMapPieDataList.Count; i++)
47.
{
48.
sbMapData.Append(
"{name:'"
+ getMapPieDataList[i].name +
"',value:"
+ getMapPieDataList[i].value +
"},"
);
49.
}
50.
//取得排名前十条的legendname数据
51.
List<SeriesMapPieData> legendName =
52.
getMapPieDataList.OrderByDescending(x => x.value).Take(
10
).ToList<SeriesMapPieData>();
53.
for
(
int
i =
0
; i < legendName.Count(); i++)
54.
{
55.
legend +=
"'"
+ legendName[i].name +
"',"
;
56.
sbPieData.Append(
"{name:'"
+ legendName[i].name +
"',value:"
+ legendName[i].value +
"},"
);
57.
}
58.
}
59.
var getPieData = sbMapData.ToString().TrimEnd(
','
) +
"]_"
+ sbPieData.ToString().TrimEnd(
','
) +
"]_["
+ legend.TrimEnd(
','
) +
"]"
;
60.
context.Response.Write(getPieData.ToJson());
61.
}
62.
#endregion
63.
64.
context.Response.End();
参考页面:
猿教程_-Entity教程-EntityFramework教程介绍
猿教程_-Entity教程-EntityFramework介绍
猿教程_-Entity教程-EntityFramework体系结构
猿教程_-Entity教程-设置EntityFramework开发环境
猿教程_-Entity教程-选择Entity Framework的开发方法
猿教程_-Entity教程-Linq to Entities 映射查询
猿教程_-Entity教程-DBEntityEntry Class
猿教程_-Entity教程-Entity Framework持久化
C#+JQuery+.Ashx+百度Echarts实现全国省市地图和饼状图动态数据图形报表的统计的更多相关文章
- echarts 柱状图和饼状图动态获取后台数据
运用echarts来实现图表 1.首先下载echarts包 http://echarts.baidu.com/echarts2/doc/example.html,在这里我下载的是 2.将echart ...
- echarts入门基础,画一个饼状图
注意:一定要自己引入echarts库 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- jquery echarts 饼状图
var myChart = echarts.init(document.getElementById('myChart')); option = { title : { text: '某站点用户访问来 ...
- Echarts 饼状图自定义颜色
今天给饼状图着色问题,找了好久 终于找到了 话不多说直接上代码 $.ajax({ url: "/HuanBaoYunTai/ajax/HuanBaoYunTaiService.ashx&qu ...
- ECharts 报表事件联动系列四:柱状图,折线图,饼状图实现联动
代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...
- Echarts生成饼状图、条形图以及线形图 JS封装
1.在我们开发程序中,经常会用到生成一些报表,比方说饼状图,条形图,折线图等.不多说了,直接上封装好的代码,如下Echarts.js所示 以下代码是封装在Echarts.js文件中 /** * Cre ...
- ECharts学习(2)--饼状图之南丁格尔图
1.上一篇中讲了如何绘制一个简单的柱状图,这次要画的是饼图,饼图主要是通过扇形的弧度表现不同类目的数据在总和中的占比,它的数据格式比柱状图更简单,只有一维的数值,不需要给类目.因为不在直角坐标系上,所 ...
- 一款基于jQuery饼状图比例分布数据报表
今天给大家带来一款基于jQuery饼状图比例分布数据报表.这款报表插件适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览 ...
- jquery和highcharts折线图、柱形图、饼状图-模拟后台传參源代码
js代码: <script type="text/javascript"> $(function(){ showLine(); showColumn(); showPi ...
随机推荐
- win 8 换 win7 注意事项
win8 换win7 硬盘格式修改一下gpt 格式转换为mbr模式 当进入到要选择安装到某一个盘时,由于磁盘的类型不同,会提示:“选中的磁盘采用GPT分区形式无法安装系统”.这时需要重新设置分区形式( ...
- AJXA!让体验更美好
AJXA = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX 是与服 ...
- 启动App的Intent
类似桌面图标打开App的Intent 程序中需要一种通知,点击后的效果需要像点击桌面图标那样: 程序在前台就什么也不干. 程序在后台,就切换到前台. 程序未启动,就启动程序. 点击通知后,通知本身跳转 ...
- 剑指Offer面试题:13.调整数组顺序使奇数位于偶数前面
一.题目:调整数组顺序使奇数位于偶数前面 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 例如有以下一个整数数组:12345 ...
- Azure PowerShell (1) PowerShell入门
<Windows Azure Platform 系列文章目录> Update: 2016-01-11 笔者文档主要都是用Azure PowerShell 0.x版本来实现的,比如0.98版 ...
- Java使用RSA加密解密及签名校验
该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1.jar注意:RSA加密明文最大长度117字节,解密要求密文最大长度为128字节,所以在加密和解密的过程中需要分块进行 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (21) -----第四章 ASP.NET MVC中使用实体框架之在页面中创建查询和使用ASP.NET URL路由过虑
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 4.2. 构建一个搜索查询 搜索数据是几乎所有应用的一个基本功能.它一般是动态的,因 ...
- 完全移除TFS2013的版本控制
环境:Vs2103(TFS2013) 目的:去掉别人项目里的TFS控制,因为每次打开时会有提示信息 解决方法: 1.删除隐藏的.$tf文件夹,搜索*.vssscc和*.vspscc这两个后缀的文件,删 ...
- [erl] erlang 进程注册和注销
想要注册一个进程,必须先要创建一个进程. 如何创建一个进程,可以使用spawn.spawn_link,它们虽然都能创建进程,但是也有微妙的区别: 1)当前进程中创建一个并行进程,当被生成的进程崩溃时, ...
- 修改input框默认黄色背景
input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill { -webkit-box-shadow: 0 0 ...