2014-03-27 37 views
4

iam使用mvc,我想將我的數據連接到谷歌餅圖。所以我用JSON來獲取名稱的列表,並使用下面的代碼如何使用谷歌圖表使用json的動態數據

public JsonResult list() 
     { 
    var result= list.GroupBy(i => i.Name).Select(i => new { word = i.Key, count = i.Count() 
return Json(result.ToList(), JsonRequestBehavior.AllowGet); 
} 

使用谷歌圖表API

google.load("visualization", "1", { packages: ["corechart"] }); 
    google.setOnLoadCallback(drawChart); 
    function drawChart() { 

     var jsonData = $.ajax({ 
      url: "list", 
      dataType: "json", 
      async: false 
     }).responseText; 
     var data = google.visualization.DataTable(jsonData); 

     var options = { 
      title: 'Certificate details', 
      is3D: true, 
     };  
     var chart = new google.visualization.PieChart(document.getElementById('piechart_3d')); 
     chart.draw(data, options); 
    } 

我想知道如何讓我的數據的鍵值對列表的數量成餅圖。 我已經搜索了很長時間,每個人都給與PHP的代碼示例。 Thankyou。

+0

我不知道你想使用服務器端的這個東西,但我可以幫你分析數據的客戶端。 'jsonData'包含什麼? – asgallant

+0

我的Json會返回這樣的數組=「{」word「:group1,」count「:1},{」word「:group2,」count「:2},{」word「:group3,」count「: 1},{ 「字」:GROUP4, 「計數」:1}]。如何從客戶端解析。謝謝 – shan

回答

7

您可以分析這些數據的客戶端是這樣的:

function drawChart() { 
    $.ajax({ 
     url: "list", 
     dataType: "json", 
     success: function (jsonData) { 
      var data = new google.visualization.DataTable(); 
      // assumes "word" is a string and "count" is a number 
      data.addColumn('string', 'word'); 
      data.addColumn('number', 'count'); 

      for (var i = 0; i < jsonData.length; i++) { 
       data.addRow([jsonData[i].word, jsonData[i].count]); 
      } 

      var options = { 
       title: 'Certificate details', 
       is3D: true 
      }; 
      var chart = new google.visualization.PieChart(document.getElementById('piechart_3d')); 
      chart.draw(data, options); 
     } 
    }); 
} 
+0

有沒有辦法使用這段代碼並選擇每片的顏色? –

0

我創建了一個基本的處理程序,以提供一些方法與DINAMIC谷歌的圖表工作。

首先你register的數據或其中的一部分。在此之後,您可以在必要時render

看:http://github.com/ahlechandre/chart-handler