使用JSON和chart.js创建圆环图

时间:2016-09-29 02:05:27

标签: jquery json chart.js

这是我第一次使用chart.js进行分析。我一直在谷歌搜索如何使用LINQ Lambda表达式将SQL数据从SQL数据库传递到.NET平台上的chart.js的完整解决方案。但是我找不到一个很好的教程。

  • 背景

我想制作一个传递JSON数据的圆环图。然而,我在甜甜圈图表上遇到了一些臀部杯。它没有出现。除了我的甜甜圈图表,我的条形图,堆栈图表都使用相同的格式。我的甜甜圈应该能够使用LINQ接受来自关系表的数据。以下是我的代码。

 $(window).load(function () {
                 //window.onload = function () {
                 $.ajax({
                     type: "POST",
                     url: "Dashboard.aspx/getPieChartData",
                     data: "{}",
                     contentType: "application/json; charset=utf-8",
                     dataType: "json",
                     success: function (msg) {
                         var aData = msg.d;

                         var aLabels = aData[0];
                         var aDatasets1 = aData[1];
                         var aDatasets2 = aData[2];
                         var aDatasets3 = aData[3];

                         var options2 = {
                              showScale: false,
                              scaleShowGridLines: false,
                              scaleGridLineColor: "rgba(0,0,0,.05)",
                               scaleGridLineWidth: 0,
                               scaleShowHorizontalLines: false,
                              scaleShowVerticalLines: false,
                              bezierCurve: false,
                            <%-- multiTooltipTemplate: "<%= datasetLabel %> - <%= value %>",--%>
                             bezierCurveTension: 0.4,
                            pointDot: false,
                            pointDotRadius: 0,
                            pointDotStrokeWidth: 2,
                            pointHitDetectionRadius: 20,
                             datasetStroke: true,
                           datasetStrokeWidth: 4,
                           datasetFill: true,

                         };


                         var barChartData = {
                             labels: aLabels,
                             datasets: [

                            {
                                value: aDatasets1,
                                color: "#00c396",
                                highlight: "#00c396"
                                 //label: "Batch"
                             }, {
                                 value: aDatasets2,
                                 color: "#336E7B",
                                highlight: "#336E7B"
                                //label: "Dashboard"
                              }
                            , {
                                value: aDatasets3,
                                 color: "#22A7F0",
                                highlight: "#22A7F0"
                                 // label: "API"
                                }

                             ]
                         }

                         var ctx = document.getElementById("pie-chart").getContext("2d");
                         window.myBar = new Chart(ctx).Doughnut(barChartData, options2, { responsive: true });


                     }
                 });
             });


 [WebMethod]
        public static List<object> getPieChartData()
        {
            List<object> iData = new List<object>();

            List<string> labels = new List<string>();
            labels.Add("Batch");
            labels.Add("Dashboard");
            labels.Add("API");



            iData.Add(labels);

            List<int> lst_dataItem_1 = new List<int>();
            lst_dataItem_1.Add(10);
            //lst_dataItem_1.Add(8);
            //lst_dataItem_1.Add(6);
            //lst_dataItem_1.Add(4);
            //lst_dataItem_1.Add(2);

            iData.Add(lst_dataItem_1);

            List<int> lst_dataItem_2 = new List<int>();
            lst_dataItem_2.Add(80);
            //lst_dataItem_2.Add(365);
            //lst_dataItem_2.Add(98);

            iData.Add(lst_dataItem_2);

            List<int> lst_dataItem_3 = new List<int>();
            lst_dataItem_3.Add(10);
            //lst_dataItem_1.Add(8);
            //lst_dataItem_1.Add(6);
            //lst_dataItem_1.Add(4);
            //lst_dataItem_1.Add(2);

            iData.Add(lst_dataItem_3);

            return iData;
        }


<div class="card-body no-padding" align="center">
        <canvas id="pie-chart" class="chart"></canvas>
<div id="doughnutLegend"></div>

1 个答案:

答案 0 :(得分:0)

我看到了各种各样的问题。

在$ .ajax调用中,在data属性中发送“{}”字符串而不是JSON:{}。

在getPieChartData()WebMethod中,您返回一个对象列表但它不应该返回一个JSON有效字符串?!。

阅读http://www.chartjs.org/docs/#doughnut-pie-chart的文档,检查您是否在图表上使用了正确的属性。