2014-11-06 82 views
-3

任何人都有成功創建一個免費或非常便宜的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

在發佈任何問題之前,請閱讀Stackoverflow之旅。 – 2014-11-06 21:42:30

回答

0

MVC有,你可以開始使用System.Web.Helpers.dll如果你沒有做一些花哨的高度互動圖表幫手圖表。

對於其他HTML5和JS /基於jQuery自由/開放源碼庫結賬

更新: 你需要提供陣列,而不只是扔dataView作爲數據源,

在你身邊ř方案中,

x值= AnalystID

y值=陣列請求ID

+0

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

0

的查看我的簡單的解決方案的陣列,雖然使用柱作爲圖表類型

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

}