2017-03-04 75 views
1

我想動態綁定數據到餅圖,但它不工作。這裏是我的代碼:數據綁定到餅圖(谷歌API)

function drawChart() { 
     $.ajax({ 
      url: "list", 
      dataType: "json", 
      success: function (jsonData) { 
       var data = new google.visualization.DataTable(); 
       data.addColumn('string', 'cName'); 
       data.addColumn('int', 'share'); 

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

       var options = { 
        title: 'Certificate details', 
        backgroundColor: '#e9e9e9' 
       }; 
       var chart = new google.visualization.PieChart(document.getElementById('piechart')); 
       chart.draw(data, options); 
      } 
     });} 

功能:

public JsonResult list() 
    { 
     int regId = getUserId(Session["username"].ToString()); 
     var result = (from e in db.share_bought_history 
         where e.regist_id == regId 
         group e by e.comapnay_id into companies 
         select new 
         { 
          cName = companies.FirstOrDefault().company.company_name, 
          share = companies.Sum(x => x.no_of_sahre) 
         }); 
     return Json(result.ToList(), JsonRequestBehavior.AllowGet); 
    } 

我也試圖通過直接的數據表,但同一個問題(沒有任何顯示) 這裏是代碼:

function drawChart() { 
     $.ajax({ 
      url: "list", 
      dataType: "json", 
      success: function (jsonData) { 
       var options = { 
        title: 'Certificate details', 
        backgroundColor: '#e9e9e9' 
       }; 
       var chart = new google.visualization.PieChart(document.getElementById('piechart')); 
       chart.draw(jsonData, options); 
      } 
     }); 

功能:

public JsonResult list() 
    { 
     DataTable dataTable = new DataTable("pie"); 
     dataTable.Columns.Add("cName", typeof(System.String)); 
     dataTable.Columns.Add("share", typeof(System.Int16)); 
     int regId = getUserId(Session["username"].ToString()); 
     var result = (from e in db.share_bought_history 
         where e.regist_id == regId 
         group e by e.comapnay_id into companies 
         select new 
         { 
          cName = companies.FirstOrDefault().company.company_name, 
          share = companies.Sum(x => x.no_of_sahre) 
         }); 
     foreach (var item in result) 
     { 
      DataRow row = dataTable.NewRow(); 
      row[0] = item.cName; 
      row[1] = item.share; 
      dataTable.Rows.Add(row); 
     } 
     return Json(dataTable, JsonRequestBehavior.AllowGet); 
    } 

,並不明白是什麼問題,因爲當我手動通過數據(靜態)餅圖完美顯示。 像:

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', 
     backgroundColor: '#e9e9e9' 
    }; 
     var chart = new google.visualization.PieChart(document.getElementById('piechart')); 

    chart.draw(data, options); 
    } 
+0

你的意思呢? http://www.tiikoni.com/tis/view/?id=6db3038 –

+0

是的,謝謝 - 上面的第一個片段看起來不錯,除了將''int''更改爲''number'' - >'數據.addColumn('number','share');' – WhiteHat

+0

當我從函數傳入「dataTable」時,我使用「number」,並且在那裏我錯了,因爲只有json對象可以被傳遞。它沒有成功(jsonData)。而不是傳遞Json對象,我將列類型更改爲「int」。但是,感謝你的男人,現在它工作。 –

回答

1

使用上面的第一個片段...

變化'int''number' ...

data.addColumn('number', 'share');