效果图如下:
在代码里引入js:
<script src="../../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script src="../../../Scripts/Chart/highcharts.src.js" type="text/javascript"></script>
<script src="../../../Scripts/Chart/modules/exporting.src.js" type="text/javascript"></script>
<script src="../../../Scripts/Chart/themes/grid.js" type="text/javascript"></script>
柱状图部分:
var myChart; function bindChart(r, caption) { if (myChart) myChart.destroy(); var op = $.extend({}, { title: { text: caption }, chart: { renderTo: 'container', hight: 300, defaultSeriesType: 'column', margin: [50, 50, 100, 80] }, exporting: { enabled: false }, credits: { enabled: false } }, r); myChart = new Highcharts.Chart(op); } function splineChar(t, yTitle) { var r = { plotOptions: { column: { allowPointSelect: true,//是否允许柱子选择 cursor:"pointer", states: { select: { color: "green" //选中柱子后的颜色填充为绿色 }, hover: { color: "#aaccff;" //鼠标移入柱子时的颜色填充为红色 } } }, series: { point: { events: { click: function () { DynamicCreatePieChart(this.category);//这里监听柱状图点击更新饼状图 } } } } }, exporting: { enabled: true }, legend: { floating: true, x: -10, y: 50, align: 'right', verticalAlign: 'top', layout: 'vertical', borderWidth: 0//backgroundColor: '#fff', }, xAxis: { categories: ['行政许可','案件处理','综合监管','公众诉求','注册登记'], //X轴的坐标值 labels: { //rotation: -45, align: 'center', style: { font: 'normal 14px 宋体' } } }, yAxis: { min: 0, title: { text: yTitle} //Y轴坐标标题 labels:纵柱标尺 }, series: [{name: '数量',data: [1607,1146,2817,12,396]}] }; bindChart(r, t); };
饼状图部分:
var PieChart; $(function () { $("#CP1_CP1_btnSearch").removeClass("BUTTON").addClass("btn btn-primary"); DynamicCreatePieChart("行政许可"); //饼状图创建 $(document).ready(function () { bindPieChart(); }); function bindPieChart() { PieChart = new Highcharts.Chart({ chart: { renderTo: 'pieChart', plotBackgroundColor: null, plotBorderWidth: null, plotShadow: false }, title: { text: "类别统计" }, tooltip: { formatter: function() { //格式化鼠标滑向图表数据点时显示的提示框 var s; if (this.point.name) { // 饼状图 s = '<b>' + this.point.name + '</b>: <br>' + this.y+ '(' + this.percentage.toFixed(2) + '%)'; //百分比需要格式化成两位 } else { s = '' + this.x + ': ' + this.y + ''; } return s; } }, plotOptions: { pie: { allowPointSelect: true, cursor: 'pointer', size: '170', dataLabels: { enabled: true, color: '#000000', connectorColor: '#000000', format: '<b>{point.name}</b>:{point.percentage}%' } } }, series: [{ type: 'pie', name: 'Browser share', data: [ ['Firefox', 45.0], ['IE', 26.8], { name: 'Chrome', y: 12.8, sliced: true, selected: true }, ['Safari', 8.5], ['Opera', 6.2], ['Others', 0.7] ] }]<----这里写的死数据----> }); } });
动态生成饼状图js:
///动态更新饼状图数据 function DynamicCreatePieChart(name) { $.ajax({ type: "GET", url: "../../../AjaxHandler.ashx", data: encodeURI("method=QurryTypeInfo&&ssgnq="+ $("#CP1_CP1_txt_Ssgnq").val()+"&&type=" + name), beforeSend: function () { $("#vLoading").show(); }, complete: function () { $("#vLoading").hide(); }, cache: false, success: function (data) { if (data!="") { var json_data=eval(data); PieChart.series[0].setData(json_data); } else { alert("暂无数据!"); } }, Error:function() { alert("数据异常"); } }); }
完整前端代码:
<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/Controls/RightPageNavBar.Master" CodeBehind="ASCSTJ.aspx.cs" Inherits="PDSCJFX.Controls.ZHFXXT.TJFX.ASCSTJ" %> <asp:Content ID="Content3" ContentPlaceHolderID="CPH" runat="server"> <link href="../../../ThradPart/css/bootstrap.min.css" rel="stylesheet" type="text/css" /> <link href="../../../ThradPart/css/bootstrap-responsive.min.css" rel="stylesheet" type="text/css" /> <link href="../../../ThradPart/font-awesome/css/font-awesome.css" rel="stylesheet" type="text/css" /> <script src="../../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <script src="../../../Scripts/Chart/highcharts.src.js" type="text/javascript"></script> <script src="../../../Scripts/Chart/modules/exporting.src.js" type="text/javascript"></script> <script src="../../../Scripts/Chart/themes/grid.js" type="text/javascript"></script> </asp:Content> <asp:Content ID="Content4" ContentPlaceHolderID="CPBtns" runat="server"> </asp:Content> <asp:Content ID="Content5" ContentPlaceHolderID="CP1" runat="server"> <div class="row-fluid"> <div class="span6"> <div class="widget-box" style="margin: 0px; padding: 0px;"> <div class="widget-content"> <div id="container" style="padding: 0px; margin: 0px; position: relative;"> </div> </div> </div> </div> <div class="span6"> <div class="widget-box" style="margin: 0px; padding: 0px;"> <div class="widget-content"> <div id="pieChart" style="padding: 0px; position: relative;"> </div> </div> </div> </div> <div class="form-group "> 所属市场所 <asp:DropDownList runat="server" ID="txt_Ssgnq"> </asp:DropDownList> <a style="visibility: hidden">无无</a><asp:Button ID="btnSearch" runat="server" Text=" 查询 " OnClick="btnSearch_Click" /> </div> <div id="vLoading" class="vLoading" style="display: none; position: absolute; left: 40%; top: 35%"> 正在加载数据,请稍候... </div> </div> <script type="text/javascript"> function showLode() { $("#vLoading").show(); } var myChart; function bindChart(r, caption) { if (myChart) myChart.destroy(); var op = $.extend({}, { title: { text: caption }, chart: { renderTo: 'container', hight: 300, defaultSeriesType: 'column', margin: [50, 50, 100, 80] }, exporting: { enabled: false }, credits: { enabled: false } }, r); myChart = new Highcharts.Chart(op); } function splineChar(t, yTitle) { var r = { plotOptions: { column: { allowPointSelect: true,//是否允许柱子选择 cursor:"pointer", states: { select: { color: "green" //选中柱子后的颜色填充为绿色 }, hover: { color: "#aaccff;" //鼠标移入柱子时的颜色填充为红色 } } }, series: { point: { events: { click: function () { DynamicCreatePieChart(this.category); } } } } }, exporting: { enabled: true }, legend: { floating: true, x: -10, y: 50, align: 'right', verticalAlign: 'top', layout: 'vertical', borderWidth: 0//backgroundColor: '#fff', }, xAxis: { categories: <%= xAxisCategories.ToString() %>, //X轴的坐标值 labels: { //rotation: -45, align: 'center', style: { font: 'normal 14px 宋体' } } }, yAxis: { min: 0, title: { text: yTitle} //Y轴坐标标题 labels:纵柱标尺 }, series: <%=returnValue.ToString() %> }; bindChart(r, t); }; var PieChart; $(function () { $("#CP1_CP1_btnSearch").removeClass("BUTTON").addClass("btn btn-primary"); DynamicCreatePieChart("行政许可"); //饼状图创建 $(document).ready(function () { bindPieChart(); }); function bindPieChart() { PieChart = new Highcharts.Chart({ chart: { renderTo: 'pieChart', plotBackgroundColor: null, plotBorderWidth: null, plotShadow: false }, title: { text: "类别统计" }, tooltip: { formatter: function() { //格式化鼠标滑向图表数据点时显示的提示框 var s; if (this.point.name) { // 饼状图 s = '<b>' + this.point.name + '</b>: <br>' + this.y+ '(' + this.percentage.toFixed(2) + '%)'; //百分比需要格式化成两位 } else { s = '' + this.x + ': ' + this.y + ''; } return s; } }, plotOptions: { pie: { allowPointSelect: true, cursor: 'pointer', size: '170', dataLabels: { enabled: true, color: '#000000', connectorColor: '#000000', format: '<b>{point.name}</b>:{point.percentage}%' } } }, series: [{ type: 'pie', name: 'Browser share', data: [ ['Firefox', 45.0], ['IE', 26.8], { name: 'Chrome', y: 12.8, sliced: true, selected: true }, ['Safari', 8.5], ['Opera', 6.2], ['Others', 0.7] ] }] }); } }); ///动态更新饼状图数据 function DynamicCreatePieChart(name) { $.ajax({ type: "GET", url: "../../../AjaxHandler.ashx", data: encodeURI("method=QurryTypeInfo&&ssgnq="+ $("#CP1_CP1_txt_Ssgnq").val()+"&&type=" + name), beforeSend: function () { $("#vLoading").show(); }, complete: function () { $("#vLoading").hide(); }, cache: false, success: function (data) { if (data!="") { var json_data=eval(data); PieChart.series[0].setData(json_data); } else { alert("暂无数据!"); } }, Error:function() { alert("数据异常"); } }); } </script> </asp:Content>
后端代码:
注册页面每次加载绘画柱状图:Page.ClientScript.RegisterStartupScript(this.GetType(), "s1", "<script>splineChar('" + title + "','" + yTitle + "');</script>");