GrpSMK Ответов: 1

Как передать данные viewbag в Google charts


Привет, я использую круговую диаграмму google. я вернул все значения через json и сохранил их в сумке просмотра и передал на страницу просмотра.данные тоже приходят,но в каждой функции данные не отображаются.

Как передать все значения данных в каждой функции и отобразить диаграмму.

Что я уже пробовал:

Контроллер
public ActionResult PerformanceChart(string id)
      {
          ViewBag.PieChart = getMapData(id);
          return View();
      }

      public ActionResult getMapData(string id)
      {
          List<Performance> mapdata = new List<Performance>();

          var linqList = from a in bics.Performances
                         where (a.EmployeeId == id)

         select new { a.Ques1, a.Ques2, a.Ques3, a.Ques4, a.Ques5, a.Ques6, a.Ques7, a.Ques8, a.Ques9, a.Ques10 };
          //mapdata = bics.Performances.ToList();

          return Json(linqList, JsonRequestBehavior.AllowGet);
      }

Просмотр страницы
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>PerformanceChart</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() {
      // Define the chart to be drawn.
      var data = new google.visualization.DataTable();
      data.addColumn('string', 'Qustion');
      data.addColumn('number', 'Marks');
      var data1 = @Html.Raw(Json.Encode(ViewBag.Piechart));

        debugger;
       // data.addRows([
       //['Nitrogen', 0.78],
       //['Oxygen', 0.21],
       //['Other', 0.01]
       // ]);
        $.each(data1,function(index,value)
        {
            data.addRows([[data1]]);
            //data.addRows([[value.ProductType,value.TotalCount]]);
            //alert('Position is : '+ index + '  And  Value is : ' + value);

        });
     

      // Instantiate and draw the chart.
      var chart = new google.visualization.PieChart(document.getElementById('myPieChart'));
      chart.draw(data, null);
    }
    </script>
</head>
<body>
    <div> 
        <div id="myPieChart" />
    </div>
</body>
</html>

1 Ответов

Рейтинг:
1

Richard Deeming

Ты сидишь data1 чтобы закодировать в JSON представление JsonResult объект. Вместо этого вы должны установить его в JSON-кодированное представление данных диаграммы.

private IEnumerable getMapData(string id)
{
    return from a in bics.Performances
           where a.EmployeeId == id
           select new 
           { 
               a.Ques1, 
               a.Ques2, 
               a.Ques3, 
               a.Ques4, 
               a.Ques5, 
               a.Ques6, 
               a.Ques7, 
               a.Ques8, 
               a.Ques9, 
               a.Ques10 
           };
}

Вероятно, вам также нужно будет исправить название ViewBag данные, поскольку C# чувствителен к регистру. Ваши наборы контроллеров ViewBag.PieChart, но ваш взгляд ищет ViewBag.Piechart.
var data1 = @Html.Raw(Json.Encode(ViewBag.PieChart));