HighCharts-Asp.net后台取Json数据模拟
来源:互联网 发布:it编程培训学校 编辑:程序博客网 时间:2024/05/16 06:49
博客缘起
最近项目需要用的图表,发现HighCharts是一个好用的工具。图表美观大方,公共API调用简练。缺点是图表种类不是很多,但是已经足够用了。
由于需要根据查询条件查询数据,从而更换图表种类、数据。经过网络搜索,发现多数文章巧合、雷同。最终归于一源:后天拼接字符串,前台接收后调用js方法eval,然后使用。这样带来两个坏处:1、代码不易维护,2、容易出现bug。
由于自己个人喜欢传递Json对象,因此在实际例子当中从后台获取json对象,前台直接使用。这样,上面的两个问题自然解决。
代码展示
前台代码:
<script src="../../Resource/Script/jquery-1.7.2.min.js" type="text/javascript"></script> <script src="../../Resource/Script/HighCharts/highcharts.js" type="text/javascript"></script> <script src="../../Resource/Script/HighCharts/modules/exporting.src.js" type="text/javascript"></script>
使用HighCharts需要引用jquery.min.js, highcharts.js, exporting.js。引用上述文件后,在前端js中设置初始options,这样,在Ajax查询数据后,方便重新初始化图表对象。
var optionPie = { chart: { plotBackgroundColor: null, plotBorderWidth: null, plotShadow: false }, title: { text: '浏览器市场份额' }, tooltip: { pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>' }, plotOptions: { pie: { allowPointSelect: true, cursor: 'pointer', dataLabels: { enabled: true, color: '#000000', connectorColor: '#000000', format: '<b>{point.name}</b>: {point.percentage:.1f} %' } } }, credits: { enabled: false //右下角不显示LOGO }, series: [{ type: 'pie', name: 'Browser share', data: [ ['Firefox', 45.0], ['IE', 26.8], { name: 'Chrome', y: 12.8, sliced: true, selected: true }, { name: 'Safari', y: 8.5 }, ['Opera', 6.2], ['Others', 0.7] ] }] } $(function () { //页面初始化后加载数据 Query(); });
在实际执行查询时,调用Asp.net的WebMethod,此后台方法必须为 public static类型。这样,总不如mvc的方法直观、易用。
//实际查询数据 function Query() { $.ajax({ type: 'POST', async: false, contentType: "application/json", url: "GetDataByFaultType.aspx/GetTestCounts",//调用webform后台方法,可以更换为mvc方法 data: "{dataType:'" + $("#ddlChartType").val() + "'}", dataType: "json", beforeSend: function () { }, success: function (msg) { if (msg) { $('#container').highcharts({ chart: optionPie.chart, title: optionPie.title, tooltip: optionPie.tooltip, plotOptions: optionPie.plotOptions, credits: optionPie.credits, series: msg.d }); } }, error: function (errorMsg) { } }); }
如此,就实现了前台方法Ajax调用后台数据。
后台代码:
后台代码中,可以参照HighCharts的官方示例,将对象放入对象中。前台获取时会直接转换为Json对象使用。
/// <summary> /// 根据数据类型获取相关数据 /// </summary> /// <param name="dataType">数据详细程度类别</param> /// <returns></returns> [WebMethod] public static dynamic GetTestCounts(string dataType) { DataTable dt = GetCountByType(dataType); List<dynamic> pies = new List<dynamic>(); foreach (DataRow dr in dt.Rows)//faulttypename,faultcount { pies.Add(new { name = dr["BrowserName"].ToString(), y = dr["Proportion"].ToString().ToDouble() }); } var series = new dynamic[] { new { type="pie",name="饼图", data = pies.ToArray()} }; return series; }
调用的模拟数据方法:
/// <summary> /// 生成模拟数据方法 /// </summary> /// <param name="dataType"></param> /// <returns></returns> private static DataTable GetCountByType(string dataType) { DataTable demoDt=new DataTable(); demoDt.Columns.Add("BrowserName"); demoDt.Columns.Add("Proportion"); if(dataType.Equals("0"))//如果是详细比例,则插入详细数据 { DataRow dr=demoDt.NewRow(); dr["BrowserName"]="Firefox"; dr["Proportion"]=26.8; demoDt.Rows.Add(dr); dr=demoDt.NewRow(); dr["BrowserName"]="IE"; dr["Proportion"]=45.0; demoDt.Rows.Add(dr); dr = demoDt.NewRow(); dr["BrowserName"]="Chrome"; dr["Proportion"]=12.8; demoDt.Rows.Add(dr); dr = demoDt.NewRow(); dr["BrowserName"]="Safari"; dr["Proportion"]=8.5; demoDt.Rows.Add(dr); dr = demoDt.NewRow(); dr["BrowserName"]="Opera"; dr["Proportion"]=6.2; demoDt.Rows.Add(dr); dr = demoDt.NewRow(); dr["BrowserName"]="Others"; dr["Proportion"]=.7; demoDt.Rows.Add(dr); } else//如果是粗略比例,则插入较为粗略数据 { DataRow dr=demoDt.NewRow(); dr["BrowserName"]="Firefox"; dr["Proportion"]=26.8; demoDt.Rows.Add(dr); dr=demoDt.NewRow(); dr["BrowserName"]="IE"; dr["Proportion"]=45.0; demoDt.Rows.Add(dr); dr = demoDt.NewRow(); dr["BrowserName"]="Chrome"; dr["Proportion"]=12.8; demoDt.Rows.Add(dr); dr = demoDt.NewRow(); dr["BrowserName"]="Others"; dr["Proportion"]=15.4; demoDt.Rows.Add(dr); } return demoDt; }
为了模拟实际生产环境当中使用DataTable的方式,所以用表格模拟。实际可以使用对象。
实例代码下载
实例代码已经上传到资源中,源码下载
0 0
- HighCharts-Asp.net后台取Json数据模拟
- Highcharts后台取数据 并且绑定每块事件
- 从后台取数据返回json数据
- HIGHCHARTS后台取数+SSH
- js取后台json数据 中文乱码
- Ajax异步从后台取Json数据
- ASP.NET后台取前端控件值
- ASP.NET后台取前端控件值
- 在ASP.NET MVC中json的应用(即JsonResult)(asp.net mvc 后台返回json数据方式 )
- MockJs结合json-server模拟后台数据
- asp.net jQuery用json取值
- ASP.NET中动态获取数据使用Highcharts图表控件
- Extjs和Asp.NET后台的数据交互(一) => Newtonsoft.Json 使用简介
- ASP.NET 前端AJAX请求数据及后台ashx返回json给前端。
- ASP.NET中使用JSON方便实现前台与后台的数据交换
- ASP.NET中使用JSON方便实现前台与后台的数据交换
- asp.net mvc 从后台向前台传送数组或JSON数据
- asp.net 解析json数据
- Windows中的进程的Working Set,Private Bytes和Virtual Bytes
- 要脱大家一起脱:网络实名制与官员财产透明化
- android性能优化 -- Performance Tips -- 译
- java cookie 的使用
- 直角坐标系与极坐标系了解与转换
- HighCharts-Asp.net后台取Json数据模拟
- IOS中http请求使用 cookie
- Apkinspector是出现错误:No module named ipapi
- VMware安装CentOS 图文教程
- C语言sprintf与sscanf函数[总结]
- 截取浮点数的小数位数
- UML类图关系大全
- hide backBarItem
- 【Mysql行锁】SELECT...FOR UPDATE和SELECT ...LOCK IN SHARE MODE