как нарисовать диаграмму гугл пирог (или пончик) с данными из базы данных

Я хочу нарисовать круговую или кольцевую диаграмму в моем проекте MVC. Я могу нарисовать это без базы данных. Но я хочу нарисовать его данными из базы данных. Как я могу это сделать?

Вот мой пример кода для кольцевой диаграммы без базы данных:

<html>
<head>
    <title>Chart</title>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">
        google.charts.load("current", { packages: ["corechart"] });
        google.charts.setOnLoadCallback(drawChart);
        function drawChart() {
            var data = google.visualization.arrayToDataTable([
              ['Task', 'Hours per Day'],
              ['Work', 11],
              ['Eat', 2],
              ['Commute', 2],
              ['Watch TV', 2],
              ['Sleep', 7]
            ]);

            var options = {
                title: 'My Daily Activities',
                pieHole: 0.4,
            };

            var chart = new google.visualization.PieChart(document.getElementById('donutchart'));
            chart.draw(data, options);
        }
    </script>
</head>
<body>
    <div id="donutchart" style="width: 900px; height: 500px;"></div>
</body>
</html>

person Onur Karaoğlan    schedule 21.04.2016    source источник


Ответы (1)


Вам в основном нужно сгенерировать данные, аналогичные вашему массиву javascript в вашем методе действия, и передать их вашему представлению. Я жестко запрограммировал это здесь. Но вы можете заменить его данными из своей базы данных.

public ActionResult Index()
{
    var data = new List<List<object>>()
    {
        new List<object>
        {
            "Task","Hours per day"
        },
        new List<object>
        {
            "Work",45
        }
        ,
        new List<object>
        {
            "Eat",25
        },
        new List<object>
        {
            "Commute to work",30
        }
    };
    return View(data);
}

Теперь ваше представление будет строго типизировано для List<List<object>>

@model List<List<object>>

Теперь в разделе сценария того же представления сериализуйте вашу модель в переменную (массив) js и используйте ее в качестве входных данных для метода arrayToDataTable.

var dataArr = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model));
var data = google.visualization.arrayToDataTable(dataArr);
person Shyju    schedule 21.04.2016