使用MVC 5和实体框架创建饼图

问题描述:

任何人都有成功创建一个免费或非常便宜的MVC 5框架饼图吗?使用MVC 5和实体框架创建饼图

编辑: 这是我试图在视图中使用的代码,它不返回任何内容。

@{ 
    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); 
    } 
+0

有吨的方式来做到这一点,你至少应该指定一些更多的技术细节。既然你提到了ASP.NET,你是否想把服务器端的图表渲染成静态图像?还是你想让它在客户端用一些时髦的JavaScript库动态绘制?或者你想使用纯JavaScript? [Here](https://live.zoomdata.com/zoomdata/visualization?__target=embedded&key=52265abb6abdbcaa8c217789#51db7ad4e4b04caf9ab346db-51db7ad4e4b04caf9ab346d5)你可以找到一个用D3.js库构建的动态饼图的好例子。 – 2014-11-06 19:09:42

+0

我在原始文章中添加了一些上下文。 – 2014-11-06 20:42:36

+0

在发布任何问题之前,请阅读*之旅。 – 2014-11-06 21:42:30

MVC有,你可以开始使用System.Web.Helpers.dll如果你没有做一些花哨的高度互动图表帮手图表。

对于其他HTML5和JS /基于jQuery*/开放源码库结账

更新: 你需要提供阵列,而不只是扔dataView作为数据源,

在你身边ř方案中,

x值= AnalystID

y值=阵列请求ID

+0

我在原始文章中添加了一些上下文 – 2014-11-06 20:41:58

的查看我的简单的解决方案的阵列,虽然使用柱作为图表类型

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");   

}