• ASP.NET Core +Highchart+ajax绘制动态柱状图


    一.项目介绍
    利用前端Highchart,以及ajax向后台获取数据,绘制动态柱状图。hightchart其他实例可查看官网文档。[Highchart](https://www.highcharts.com.cn)
    二.准备工作
    先搭建项目以及所要访问的数据库及数据,这里不做赘述。
    然后编写Controller代码,用于提供数据。

     1 [HttpPost]
     2 public JsonResult GetDataList(int BeformDays, int Type)
     3 {
     4 JsonResultData json = new JsonResultData();
     5 json.datas.Add(new Detail {
     6 name="测试总数"
     7 });
     8 json.datas.Add(new Detail
     9 {
    10 name = "测试失败"
    11 });
    12 json.datas.Add(new Detail
    13 {
    14 name = "测试成功"
    15 });
    16 var list=_dataContext.Responses.ToList();
    17 if (Type == 1)
    18 {
    19 foreach (var item in list)
    20 {
    21 json.names.Add(item.ClientName);
    22 //json.testSuccessNum.Add(item.TestSuccessNum);
    23 json.datas.FirstOrDefault(o => o.name == "测试总数").data .Add(item.TestNum);
    24 json.datas.FirstOrDefault(o => o.name == "测试成功").data.Add(item.TestSuccessNum);
    25 json.datas.FirstOrDefault(o => o.name == "测试失败").data.Add(item.TestNum-item.TestSuccessNum);
    26 }
    27 }
    28 return Json(json);
    29 }

    二.前端代码
    先引用需要用到的js包,如下:

    ```

    <script src="http://cdn.highcharts.com.cn/highcharts/highcharts.js"></script>
    <script src="https://code.highcharts.com.cn/jquery/jquery-1.8.3.min.js"></script>
    <script src="https://code.highcharts.com.cn/highcharts/modules/exporting.js"></script>
    <script src="https://code.highcharts.com.cn/highcharts/modules/data.js"></script>
    <script src="https://code.highcharts.com.cn/highcharts/modules/series-label.js"></script>
    <script src="https://code.highcharts.com.cn/highcharts/modules/oldie.js"></script>
    <script src="https://code.highcharts.com.cn/highcharts-plugins/highcharts-zh_CN.js">	</script> 
    <script src="https://code.highcharts.com.cn/jquery/jquery-1.8.3.min.js"></script>  

    js代码如下:

     1 <script type="text/javascript">
     2 //DrawHistogram();
     3 $(document).ready(function () {
     4 DrawHistogram("container");//页面加载,异步运行该方法
     5 });
     6 setInterval(function () {
     7 DrawHistogram("container");
     8 }, 1000 * 60);//定时刷新数据
     9 function DrawHistogram(id) {
    10 var chart;
    11 //获取数据
    12 $.ajax({
    13 async: false,
    14 type: 'post',
    15 datatype: 'json',
    16 url: '/home/getdatalist',
    17 data: { BeformDays: 7, Type: 1 },
    18 success: function (Data) {
    19 Name = Data.names;
    20 //highchants样式渲染
    21 chart = new Highcharts.Chart({
    22 chart: {
    23 renderTo: id,//放置图表的容器
    24 plotBackgroundColor: null,//绘图背景颜色
    25 plotBorderWidth: null,//绘图边框宽度
    26 defaultSeriesType: 'column'//图表类型样式line, spline, area, areaspline, column, bar, pie , scatter这些样式随你选
    27 },
    28 title: {
    29 text: '柱状图统计'
    30 },
    31 subtitle: {
    32 text: ''//副标题
    33 },
    34 xAxis: {//X轴数据
    35 categories: Data.names,//请求到的json数据
    36 labels: {
    37 rotation: 0, //字体倾斜
    38 align: 'right',
    39 style: { font: 'normal 13px 宋体' }
    40 }
    41 },
    42 yAxis: {//Y轴显示文字
    43 title: {
    44 text: '个数/个'
    45 }
    46 },
    47 //点击事件
    48 tooltip: {
    49 enabled: true,//是否显示tooltip
    50 formatter: function () {
    51 return '<b>' + this.x + '</b><br/>' + this.series.name + ': ' + Highcharts.numberFormat(this.y, 1);
    52 }
    53 },
    54 plotOptions: {
    55 line: {
    56 dataLabels: {
    57 enabled: true
    58 },
    59 enableMouseTracking: true//是否显示title
    60 }
    61 },
    62 series: Data.datas//json
    63 });
    64 //setInterval("getjson()", 3000);
    65 }
    66 });
    67 }
    68 </script>
    69 
    70 ```
    71 在html页面添加容器,html代码如下:
    72 
    73 ```
    74 <body>
    75 <!--存放内容-->
    76 <div id="container">
    77 </div>
    78 </body>

    效果图:

  • 相关阅读:
    spark 程序 TopN FileSort SecondarySort 的出错解决办法
    预报温度和体感温度不是一回事
    搜索引擎 搜索技巧
    scrapy 爬虫框架
    scala-sbt
    英语削笔机
    php 一句话木马
    [CS充实之路] CS50 WEEK 1
    UBUNTU 16.04 编译 OPENJDK8
    使用logrotate分割Tomcat的catalina日志
  • 原文地址:https://www.cnblogs.com/corebyfrank/p/11929475.html
Copyright © 2020-2023  润新知