Получение ошибки диаграммы Google "Столбцы данных для оси # 0 не могут иметь тип строки" - PullRequest
0 голосов
/ 20 сентября 2018

Я видел несколько форумов по этому вопросу, и я знаю ошибку, но проверил свой код, но не могу понять, где я ошибаюсь, пожалуйста, помогите мне таблицы базы данных, которые я запрашиваю:таблица: таблица этапов таблица aspnetusers: таблица aspusers

затем мой код в asp.net mvc Метод контроллера:

  [HttpPost]
    public JsonResult StudentColumnChart()

    {
        var userID = User.Identity.GetUserId();
        string supervisorid = userID;
        string query = $"SELECT AspNetUsers.Name AS Name, SUM(Milestone.Progress)/ COUNT(Milestone.Progress) * 100 AS Progress FROM Milestone INNER JOIN AspNetUsers ON Milestone.StudentNumber = AspNetUsers.Id INNER JOIN Allocation ON Milestone.StudentNumber = Allocation.StudentNumber Where Allocation.StaffNumber =  '{{supervisorid}}'  GROUP BY AspnetUsers.Name "; 

        //string query=$"SELECT AspNetUsers.Name AS NAME, SUM(Milestone.Progress)/ COUNT(Milestone.Progress) * 100 AS TotalProgress, Allocation.StaffNumber AS STAFF, Allocation.StudentNumber AS STUDENT " +



        //string query = "SELECT AspNetUsers.Name, SUM(Milestone.Progress)/ COUNT(Milestone.Progress) * 100 AS TotalProgress, Allocation.StaffNumber, Allocation.StudentNumber" +
        //     " From Milestone " +
        //     "INNER JOIN AspNetUsers ON Milestone.StudentNumber=AspNetUsers.Id " + 

        //     "  WHERE Allocation.StaffNumber=id AND Milestone.StudentNumber=Allocation.StudentNumber GROUP BY AspNetUsers.Name";
        // //string query = "SELECT AspNetUsers.Name, SUM(Milestone.Progress)/ COUNT(Milestone.Progress) * 100 AS TotalProgress, Allocation.StaffNumber, Allocation.StudentNumber" +
        //    " From Milestone INNER JOIN AspNetUsers ON Milestone.StudentNumber=AspNetUsers.Id " + 

        //    "  WHERE Allocation.StaffNumber=id AND  GROUP BY AspNetUsers.Name";
        string constr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
        List<object> chartData = new List<object>();
        chartData.Add(new object[]
                        {
                           "Name","Progress"
                        });

        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand(query))
            {
                cmd.CommandType = CommandType.Text;
                cmd.Connection = con;
                con.Open();
                using (SqlDataReader sdr = cmd.ExecuteReader())
                {
                    while (sdr.Read())
                    {
                        chartData.Add(new object[]
                        {
                         sdr["Name"], sdr["Progress"]
                        });
                    }
                }

                con.Close();
            }
        }

        return Json(chartData);
    }

представление:

<script type="text/javascript" src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
    google.load("visualization", "1", { packages: ["corechart"] });
    google.setOnLoadCallback(drawChart);
    function drawChart() {
        $.ajax({
            type: "Post",
            url: "/CHART/StudentColumnChart",

            data: '{}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (r) {
                var data = google.visualization.arrayToDataTable(r);

                //ColumnChart
                var options = {
                    hAxis: {
                        title: "TotalProgress",
                        id: "progress",
                        label: "progress",
                        type: "number"
                    },
                    vAxis: {
                        title: "Name",
                        id: "Name",
                        label: "Name",
                        type: "string"
                    },
                    title: 'Students Progress %',
                    width: 600,
                    height: 400,
                    bar: { groupWidth: "50%" },
                    legend: { position: "none" },
                    isStacked: true,
                    format: "#.#'%'"
                };
                var chart = new google.visualization.ColumnChart($("#chart")[0]);

                //var chart = new google.visualization.PieChart($("#chart")[0]);

                chart.draw(data, options);
            },
            failure: function (r) {
                alert(r.d);
            },
            error: function (r) {
                alert(r.d);
            }

        });
    }
</script>

<div id="chart" style="width: 900px; height: 500px;"></div>

Но я продолжаю получать эту ошибку: ошибка

...