上面介绍了柱状图,只有js代码后台的传递等我们介绍完饼形图的使用过程在做介绍

有了柱状图的介绍,在使用饼形图,其实很容易了,上代码

1.首先加载网页时,需要用到的加载项和事件。

   //打开网页加载
$(function () {
// 路径配置
require.config({
paths: {
echarts: 'http://echarts.baidu.com/build/dist'
}
});
areaQuery();
})

2.获取查询的区域areaId值,以及查询区域等级值,把需要的数据异步到后台进行查询,为了防止数据的多次加载造成数据失真,我们需要用js中的splice方法先进行清空数据,然后在进行加载数据。

 //查询操作
function areaQuery() {
var name = "婚姻";//户口性质名称
var arrays = new Array();//保存获取的数据信息
var nameArrays = new Array();//获取属性名称
var sum = 0;//数据总和
var resId = $("#ddlResidence").val();
if (resId == "") {
resId = 0;
} else {
resId = parseInt(resId);
}
var county = $("#ddlCountyArea option:selected").attr("value");//县
var town = $("#ddlTownArea option:selected").attr("value");//镇
var village = $("#ddlSubArea option:selected").attr("value");//村 var areaId = 0;
var level = 0;
if (village != "") {
level = 3;
areaId = village;
} else {
if (town != "") {
areaId = town;
level = 2;
} else {
if (county != "") {
areaId = county;
level = 1;
}
}
}
//异步获取统计图数据
$.ajax({
type: "post",
url: "@Url.Action("GetMarriageList")",
datatype: "json",
data: { areaId: areaId, level: level },
beforesend: function (xmlhttprequest) {
$("#pint").text("数据正在加载中,请稍后.........");
},
success: function (json) {
nameArrays.splice(0, nameArrays.length);//先清空数据,然后在插入
arrays.splice(0, arrays.length); //先清空数据,然后在插入
for (var item in json) {
nameArrays.push(item);
arrays.push(parseInt(json[item]));
sum = sum + parseInt(json[item]);
}
setOptionBar(name, nameArrays, arrays, sum);
},
error: function () {
alert("此区域没有数据");
}
});
}

3.饼形图的设置代码,根据自己的需要,我做了一些改动。原有功能是,当鼠标移动到统计图中任意一个统计字段时,字段所表示的环形区域会移位,同时中间圆形显示字段名称。改动中间名称写死,为name变量值。为了让圆形显示,我们需要给他数据,数据变量为sum,他的值是统计图中所有字段之和。

  //统计图设置
function setOptionBar(name, nameData, arrays, sum) {
// 使用
require(
[
'echarts',
'echarts/chart/pie' // 使用柱状图就加载bar模块,按需加载
],
function (ec) {
// 基于准备好的dom,初始化echarts图表
var myChart = ec.init(document.getElementById('main'));
// 基于准备好的dom,初始化echarts图表
var myChart = ec.init(document.getElementById('main'));
option = {
tooltip: {
trigger: 'item',
formatter: "{a} <br/>{b} : {c} ({d}%)"
},
legend: {
orient: 'vertical',
x: 'left',
data: nameData
},
toolbox: {
show: true,
feature: {
mark: { show: true },
dataView: { show: true, readOnly: false },
magicType: {
show: true,
type: ['pie']
},
restore: { show: true },
saveAsImage: { show: true }
}
},
calculable: false,
series: [
{
//name:'访问来源',
type: 'pie',
selectedMode: 'single',
radius: [0, 70],
itemStyle: {
normal: {
label: {
position: 'center',
textStyle: {
color: '#9966CC',
align: 'center',
baseline: 'middle',
fontFamily: '微软雅黑',
fontSize: 30,
fontWeight: 'bolder'
}
},
labelLine: {
show: false
}
}
},
data: [
{ value: sum, name: name }
]
},
{
name: '结婚情况',
type: 'pie',
radius: [100, 140], // for funnel
x: '60%',
width: '35%',
funnelAlign: 'left',
max: 1048, data: [
{ value: arrays[0], name: nameData[0] },
{ value: arrays[1], name: nameData[1] },
{ value: arrays[2], name: nameData[2] },
{ value: arrays[3], name: nameData[3] }
]
}
]
};
var ecConfig = require('echarts/config');
myChart.on(ecConfig.EVENT.PIE_SELECTED, function (param) {
var selected = param.selected;
var serie;
var str = '当前选择: ';
for (var idx in selected) {
serie = option.series[idx];
for (var i = 0, l = serie.data.length; i < l; i++) {
if (selected[idx][i]) {
str += '【系列' + idx + '】' + serie.name + ' : ' +
'【数据' + i + '】' + serie.data[i].name + ' ';
}
}
}
document.getElementById('wrong-message').innerHTML = str;
}) myChart.setOption(option);
})
}

上效果图

饼形图页面的处理也就完成了,我们只是介绍了页面中处理的js代码,在测试过程中,大家可以先给数据,做出效果,然后在异步获取后台数据。

asp.net MVC项目开发之统计图echarts饼形图(二)的更多相关文章

  1. asp.net MVC项目开发之统计图echarts后台数据的处理(三)

    前台显示的东西,有相应的文档很容易修改,后台传递数据方式才是我们最关心的 首先要记住,我们一步数据使用的是post,那么后台代码我们要给方法加上 [HttpPost]注解 不然异步没有效果 下面上代码 ...

  2. asp.net MVC项目开发之统计图echarts柱状图(一)

    echarts统计图doc网址:http://echarts.baidu.com/echarts2/index.html 使用echarts,需要引用在js中,如果你已经下载echarts的js包,可 ...

  3. asp.net MVC项目开发之统计图的使用(前言)

    接触这个项目,是项目组长已经完成了多数需求,并且有2个项目需要完工的情况下,让我加入,给了我2个表格,让我去设计出统计图.      第一次做统计图,可以说没有任何经验,不知道该如何下手,表格的数据量 ...

  4. 习题-任务2初始ASP.NET MVC项目开发

    一.选择题 1.在ASP.NET MVC项目的RouteConfig.cs文件中,(    )方法注册了默认的路由配置. A.RegisterMap    B.RegisterRoutes    C. ...

  5. ASP.NET MVC项目实现BasePage基类用作ASPX.CS网页继承

    在ASP.NET MVC项目开发,还是需要创建一些Web Page来实现一些功能,如呈现报表等... 但是一旦项目的.ASPX网页太多了,其中的程序代码也会有代码冗余,出现这些情况,我们得需要对这些代 ...

  6. 基于BUI开发Asp.net MVC项目

    因工作性质参于并开发过一些Web应用程序,前端项目框架也用了不少,比如MiniUI.ExtJS.以及定制的项目前端框架.无意中看到BUI前端框架,第一眼就被它的优雅布局所吸引.简洁的项目门户Banne ...

  7. ASP.NET MVC——CodeFirst开发模式

    Entity Framework框架提供了几种开发模式,比如Database First,Model First,Code First.Database First是最老也是应用得最广泛的一种设计方式 ...

  8. Asp.net Mvc模块化开发之分区扩展框架

    对于一个企业级项目开发,模块化是非常重要的. 默认Mvc框架的AreaRegistration对模块化开发真的支持很好吗?真的有很多复杂系统在使用默认的分区开发的吗?我相信大部分asp.net的技术团 ...

  9. Asp.net Mvc模块化开发系列(目录)

    模块化开发是非常重要的,模块化开发是个系统性问题,为此我觉得有必须要写一个系列的文章才能基本说的清楚 那又为什么要写一个目录呢? 其一.是对我昨天承诺写一个系列新的文章的回应 其二.是先写出一个大纲, ...

随机推荐

  1. Nhibernate的Session和StatelessSession性能比较

    Nhibernate的Session和StatelessSession性能比较 作者:Jesai 一个月入30K的大神有一天跟我说:我当年在你现在这个阶段,还在吊儿郎当呢!所以你努力吧! 有时候,一个 ...

  2. .net mvc Bundle 自己配置

    遇到了个坑 来和大家分享一下 1.一个空的mvc项目需要引用 System.Web.Optimization 2.然后nuget添加 microsoft ASP.NET WEB OPTIMIZATIO ...

  3. Dynamics CRM 快速获取custom entity

    我们可以使用Command来实现快速获取custom entity的值. 创建cmd  并且在nuget中引用 CRMSDK 复制下面的代码. userName 为登陆CRM的email passwo ...

  4. css的字体单位

    在css中的字体单位主要以px.em.rem为主.其中px也就是像素,是一种字体长度,它的长度是相对于显示器的品目分辨率而言的.一般情况下在浏览器中默认字体的大小是16px.其中em是相对字体.em的 ...

  5. #使用abp框架与vue一步一步写我是月老的小工具(2) 后台搭建初体验

    #使用abp框架与vue一步一步写我是月老的小工具(2) 后台搭建初体验 一.续上前言 关于这个小玩意的产品思考,假设我暂时把他叫我是月老热心人 这是一个没有中心的关系链,每个人进入以后都是以自己为中 ...

  6. MySQL物理物理备份与还原工具xtraBackup

    (一)xtraBackup简介 xtraBackup是Percona公司开发的一款MySQL数据库备份软件,在备份模式中属于物理备份.其显著特点是开源.免费.备份执行过程中不会阻塞事物.备份可压缩.支 ...

  7. C++标准模板库(STL)学习笔记

    C++标准模板库(STL) 一.vector(变长数组) 1.使用vector #include <vector> using namespace std; 2.vector的定义 vec ...

  8. python学习记录(五)

    20180829--https://www.cnblogs.com/fnng/archive/2013/04/20/3032563.html 字典 字典的使用 现实中的字段及在Python中的字段都进 ...

  9. python中常见的报错信息

    python中常见的报错信息 在运行程序时常会遇到报错提示,报错的信息会提示是哪个方向错的,从而帮助你定位问题: 搜集了一些python最重要的内建异常类名: AttributeError:属性错误, ...

  10. char*a[10] ={"123456","2345"}和char*a="abcde"