Thursday, March 12, 2009

Create a MVC Helper to Display a Microsoft Chart Control

1. Add a reference to C:\Program Files\Microsoft Chart Controls\Assemblies\System.Web.DataVisualization.dll and C:\Program Files\Microsoft Chart Controls\Assemblies\System.Web.DataVisualization.Design.dll

---Helper Class --

2. using System.Web.UI.DataVisualization.Charting;

3. Add static method.

public static void Chart(this HtmlHelper helper, string polltitle, List<int> values, List<string> labels, int width, int height, SeriesChartType ChartType, System.Web.UI.Page page)
System.Web.UI.DataVisualization.Charting.Chart Chart1 = new System.Web.UI.DataVisualization.Charting.Chart();
Chart1 = new System.Web.UI.DataVisualization.Charting.Chart();
Chart1.Width = width;
Chart1.Height = height;
Chart1.RenderType = RenderType.ImageTag;
// Populate series data
Chart1.Series["Default"].Points.DataBindXY(labels, values);

// Set Doughnut chart type
Chart1.Series["Default"].ChartType = ChartType;

// Set labels style
Chart1.Series["Default"]["PieLabelStyle"] = "outside";

// Enable 3D
Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;

// Disable the Legend
//Chart1.Legends[0].Enabled = false;

// Render chart control
Chart1.Page = page;
HtmlTextWriter writer = new HtmlTextWriter(page.Response.Output);


4. In your view page.

<%Html.Chart(ViewData["charttitle"].ToString(), (List<int>)ViewData["chartvalues"], (List<string>)ViewData["chartlabels"], 400, 400, SeriesChartType.Pie, this); %>

Obvisouly you could go nuts in your helper method and have all kind of different options like enable 3d, show title, color etc etc.



Mungyun said...
This comment has been removed by the author.
deype0 said...

Thanks a lot!