0
我正在尝试谷歌API与一些整洁的图表至极,工作正常。但是当我尝试用TreeMap显示相同的数据时,它将不起作用。继续收到错误说:第1列必须是字符串类型..我不明白为什么这适用于图表,而不是为树形图?如何在MVC4中使用Google JS API将C#中的对象列表显示为JavaScript?
这可能是很多代码,但它很直截了当,即时通讯不知道哪部分是显示在这里,所以我显示所有。
下面是与公司性质的简单类:
public class Company
{
public int Expense { get; set; }
public int Salary { get; set; }
public string Year { get; set; }
}
下面是为企业提供的列表,并把数据发送到视图控制器:
public ActionResult GetData()
{
return Json(CreateCompaniesList(), JsonRequestBehavior.AllowGet);
}
private IEnumerable<Company> CreateCompaniesList()
{
List<Company> companies = new List<Company>();
Company company1 = new Company() { Expense = 200, Salary = 1000, Year = new DateTime(2014, 1, 1).ToString("yyyy/mm/dd") };
Company company2 = new Company() { Expense = 300, Salary = 800, Year = new DateTime(2014, 2, 1).ToString("yyyy/mm/dd") };
Company company3 = new Company() { Expense = 500, Salary = 1400, Year = new DateTime(2014, 3, 1).ToString("yyyy/mm/dd") };
companies.Add(company1);
companies.Add(company2);
companies.Add(company3);
return companies;
}
这里的视图提供图表和树形图:
@{
ViewBag.Title = "Home Page";
}
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" >
google.load("visualization", "1", { packages: ["corechart"] });
google.load("visualization", "1", { packages: ["treemap"] });
google.setOnLoadCallback(drawChart);
function drawChart() {
$.get('/Home/GetData', {},
function (data) {
var tdata = new google.visualization.DataTable();
tdata.addColumn('string', 'Year');
tdata.addColumn('number', 'Salary');
tdata.addColumn('number', 'Expense');
for (var i = 0; i < data.length; i++) {
tdata.addRow([data[i].Year, data[i].Salary, data[i].Expense]);
}
var options = {
title: "Expenses, salary For the current year"
};
var chart1 = new google.visualization.AreaChart(document.getElementById('chart_div1'));
var chart2 = new google.visualization.LineChart(document.getElementById('chart_div2'));
var chart3 = new google.visualization.PieChart(document.getElementById('chart_div3'));
var chart4 = new google.visualization.ColumnChart(document.getElementById('chart_div4'));
var tree = new google.visualization.TreeMap(document.getElementById('tree_div1'));
//var chart6 = new google.visualization.ControlsandDashboards(document.getElementById('chart_div6'));
chart1.draw(tdata, options);
chart2.draw(tdata, options);
chart3.draw(tdata, options);
chart4.draw(tdata, options);
tree.draw(tdata, options);
});
}
</script>
<div id="chart_div1" style="width: 900px; height: 500px;">
</div>
<div id="chart_div2" style="width: 900px; height: 500px;">
</div>
<div id="chart_div3" style="width: 900px; height: 500px;">
</div>
<div id="chart_div4" style="width: 900px; height: 500px;">
</div>
<div id="tree_div1" style="width: 900px; height: 500px;">
</div>
图1 - 4按预期工作,与“树”
Okey但我必须使用数组格式的数据时,树图吗? – koffe14
hi @KristofferAndersson,看我更新的答案。 – Lin
优秀,gracias =) – koffe14