我正在寻找一个朋友代码,以将谷歌图表实施到我的mvc项目中。
我有一个要从中提取数据的模型:
public partial class HoursPerSite
{
public string SiteName { get; set; }
public Nullable<decimal> SiteHours { get; set; }
}
该图表已呈现并且看起来不错,但图例显示的是SiteHours,而不是我想要的SiteName。
这是控制器部分:
// HOLIDAY PIE START
ViewBag.msg = db.HoursPerSites.Count().ToString();
var query = from r in db.HoursPerSites
select new { Count = r.SiteHours, Value = r.SiteHours };
var result2 = query.ToList();
var datachart2 = new object[result2.Count];
int l = 0;
foreach (var i in result2)
{
datachart2[l] = new object[] { i.Value.ToString(), i.Count };
l++;
}
string datastr2 = JsonConvert.SerializeObject(datachart2, Formatting.None);
ViewBag.dataj2 = new HtmlString(datastr2);
// HOLIDAY PIE END
我想要它,因此饼图图例/键显示的是站点而不是时间。
答案 0 :(得分:1)
不确定,但这是
select new { Count = r.SiteHours, Value = r.SiteHours };
不应该是这样的:( SiteName ):
select new { Count = r.SiteHours, Value = r.SiteName };
此外,我可能会说你的名字很不好。那不会使您的未来工作变得更轻松。尝试命名变量并更具体地进行对象化。
编辑:
我会将您当前的代码更改为此:
请注意,我没有任何编辑器,并且可能存在语法错误
#region Holiday Pie Chart
ViewBag.msg = db.HoursPerSites.Count().ToString();
var queryHoursPerSites = from r in db.HoursPerSites
select new { Count = r.SiteHours, Value = r.SiteHours };
var resultsQueryHoursPerSites = queryHoursPerSites.ToList(); // or HoursPerSitesCollection
var holidayPieChart = new object[resultsQueryHoursPerSites.Count];
int counter = 0; //
foreach (var record in resultsQueryHoursPerSites)
{
holidayPieChart[counter] = new object[] { record.Value.ToString(), record.Count };
counter++;
}
string deserialisedResults = JsonConvert.SerializeObject(holidayPieChart, Formatting.None);
// no idea what dataj2 is here ...
ViewBag.dataj2 = new HtmlString(deserialisedResults);
#endregion
我确信还有更多“改进”或“改变”的地方,但是我认为这已经是一种改进。
我确信其他人可以对我在这里提出的建议做进一步的阐述:)