Linq 使用MVC5和实体框架创建饼图
有没有人成功地用MVC5框架创建了一个免费或非常便宜的饼图 编辑: 这是我试图在视图中使用的代码,它不返回任何内容Linq 使用MVC5和实体框架创建饼图,linq,entity-framework,asp.net-mvc-5,pie-chart,Linq,Entity Framework,Asp.net Mvc 5,Pie Chart,有没有人成功地用MVC5框架创建了一个免费或非常便宜的饼图 编辑: 这是我试图在视图中使用的代码,它不返回任何内容 @{ var dataSet = new DataSet(); var dataView = new DataView(dataSet.Tables["Request"]); var myChart = new System.Web.Helpers.Chart(width: 600, height:400) .AddTitle("Status
@{
var dataSet = new DataSet();
var dataView = new DataView(dataSet.Tables["Request"]);
var myChart = new System.Web.Helpers.Chart(width: 600, height:400)
.AddTitle("Status Summary")
.AddSeries(chartType: "Pie", name:"Requests", xValue: dataView, xField: "AnalystID", yValues: dataView, yFields: "RequestID")
.Write();
}
这是我的模型
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace DBMR.Models
{
public class RequestStatusCount
{
public string StatusName { get; set; }
public int StatusCount { get; set; }
}
这是我的控制器:
public ActionResult TestChart()
{
var items = db.Requests
.Where(r => r.RequestID > 0)
.GroupBy(r => new { r.Status.Name, r.StatusID })
.Select(r => new RequestStatusCount
{
StatusName = r.Key.Name,
StatusCount = r.Count()
}).OrderByDescending(r => r.StatusCount);
return View(items);
}
MVC有一个图表助手,如果你不做一些有趣的高度互动的图表,你可以使用它 对于其他基于HTML5和JS/Jquery的免费/开源库签出 更新: 您需要提供数组,而不是将dataView作为数据源 在您的场景中 xValue=分析ID的数组
yValue=RequestID的数组参见我的简单解决方案,尽管使用列作为图表类型
public ActionResult DrawChart()
{
var report = Db.Candidateresults.GroupBy(i => i.subject)
.Select(g => new {
Subjects = g.Key,
TotalScore = g.Sum(i=>i.score)
});
var chart = new Chart(width: 500, height: 400, theme:ChartTheme.Green);
foreach(var item in report)
{
chart.AddTitle("Statistical Performance Report")
.AddSeries(
chartType: "column",
xValue: new[] {item.Subjects },
yValues: new[] {item.TotalScore }
).GetBytes("png");
}
return File("chart", "image/bytes");
}有很多方法可以做到这一点,您至少应该详细说明一些技术细节。由于您已经提到ASP.NET,是否要在服务器端将图表呈现为静态图像?或者,您希望在客户端使用一些时髦的JavaScript库动态地绘制它吗?或者您想使用纯JavaScript?你可以找到一个使用D3.js库构建的动态饼图的好例子。我在我的原始帖子中添加了一些上下文。在发布任何问题之前,请阅读Stackoverflow教程。我在我的原始帖子中添加了一些上下文