Microsoft Chart Controls For ASP.NET

3.73 (15 votes)

Many times, I have seen questions about where to obtain Charting controls for ASP.NET web applications, and until recently, the answer has always been to have a look at many of the third party offers that are available from the leading control development companies. That is until Microsoft released their Chart Controls for both Windows Forms and ASP.NET to work with .Net 3.5 SP1.

To begin with, you need to download MSChart.exe, and you will also find life a lot easier if you install the Visual Studio Add on that adds the charting control to the toolbox and offers Intellisense support for the components too, and also download the .chm documentation. There are also a load of samples showing the charts being used against a variety of data ssources, such as xml, csv, Excel and a typed dataset. These can be downloaded from

Once you have installed the .exe and the VS Add on, you will see a chart icon in the Data section of the Toolbox in Visual Studio, but if you are using Visual Web Developer Express, you will need to add it manually. This can be done by right-clicking on the Data section header, and choosing Add Items.

From there, select the System.Web.UI.DataVisualization.Charting flavour of Chart, and click OK.

That's it. The Chart icon should appear in your toolbox, ready to be dragged onto the Forms Designer. Once you do, you are presented with a default vertical bar chart.

To change the chart type, you need to find the Series option in the Properties panel for the Chart. If you click next to (Collection) a button with ellipses will show, and clicking on this will reveal the Series Collection Editor. In the Chart section, you will find Chart Type, and a drop down offering you a selection to choose from. I chose Pie.

There are a huge number of options available to format the chart. These are found in the Chart section of the Properties, and are generally members of collections. ChartArea options include the ability to set a 3D appearance, inclination etc of the actual chart; Legends and Title allow you finer control over these areas, and Series holds one of the most important options (in the Data Source section): XValueMember and YValueMembers. These must be set to bind data to the chart, and to prevent a blank image being rendered.

I drag a SqlDataSource onto the designer, and configure it to connect to an old copy of this site's database, and apply the following SQL to it:


SELECT Categories.Category, COUNT(ArticleCategories.CategoryID) AS TotalInCategory

FROM ArticleCategories

INNER JOIN Categories ON ArticleCategories.CategoryID = Categories.CategoryID

GROUP BY Categories.Category


This produces a resultset that shows how many articles there were in each category on my site during stage 2 of its evolution. Having done that, click the smart tag on the chart, and choose the datasource. At this point you can normally run the page if this was a GridView or similar databound control, but if you do, the result would be a totally blank page. Now you need to go back to the Properties panel, and find the Series section and configure the XValueMember and the YValueMembers as mentioned previously. Fortunately, the two values that are being returned are available as dropdown options.

I select Category for the X value, and TotalInCategory for the Y values, and run the page:

The result is far from satisfactory, so I fiddle with some more of the formatting properties and the size and get something much nicer:

The charts are rendered as images. The default is to use an HttpHandler to stream the image to the browser as a png file - all managed by the Chart library. However, there are options to change the image type to jpg, bmp or emf files and to save them to the filesystem and use a straightforward <img> tag to show them. The documentation is quite comprehensive in its coverage of the library classes etc, but is very disappointing in its lack of walkthroughs or easier explanations or notes as to what each property does, and what effect changing it might have on the resulting graph. However, there is already a forum dedicated to the chart control library at MSDN forums, and no doubt most beginner questions will be answered there as it grows.


Date Posted:
Last Updated:
Posted by:
Total Views to date: 53920


- Dhruv

Hi Mike! Your chart blog is not going in depth for how to utilize the chart controls for various charttypes. I intend to use them for various type,i.e. pie charts, bubble charts,bar charts etc. So, if u could guide me to that,it will really be nice.

- Mike


The article was only intended to act as an introduction to the controls when they were first released last year. If you want to know more about how to use them, I suggest you try the documentation that comes with them.

- Nilesh

this is very good document and site is asom...
You r doing greate job dear thank a lot.....

- Nish

how to use bubble chart in MS Chart

- Mike


The documentation that comes with the chart controls has details

- ferdy

I've Visual Web Developer 2008. I tried to installing mschart and relative add-on for Visual Studio, but it was in error. If I remember the error message was: Formatetc error. Or similar to.
Help me. Thank's.

- Manivel

Hi i was not able to add the chart control by the above method in visual studio 2005

- Mike


VS 2005 doesn't support ASP.NET 3.5 or 4.0, so you should look at downloading the free Visual Studio 2010 Express and use that instead.

- Rick

Hello Mike,

I'm trying to add the control to VS 2010 for work on .net framework 3.5 projects. When I add the control it shows up greyed out on the tool box. Any ideas?


- Mike


Sorry - no idea at all. You should post a question to a forum.

- @mayur

Hi Mike!

how to use Pie && Bar chart in VS 2010 ????

- Mike


I dunno.

Recent Comments

Rajasekar 24/11/2015 12:27
In response to Import Data From Excel to Access with ASP.NET
While use this code i'm facing on error: "Unrecognized Database format C:\mydabase.accdb" can any...

Parmod 24/11/2015 07:28
In response to ASP.NET 5 Project Basics
For a new learner (Fresher) in ASP.NET there is a issue Fresher have to learn two types of , old...

Robert 22/11/2015 21:35
In response to ASP.NET 5 By Numbers
I have to agree fully with Paul, this does sound like an entire mis-mash of technologies. Sort of in...

Christian 21/11/2015 15:46
In response to MVC 5 with EF 6 in Visual Basic - Creating an Entity Framework Data Model
Many thanks Mike to introduce me in the EF6 Code First way of thinking. Exactly what I need for my...

ax plains 20/11/2015 16:29
In response to Examining the Details and Delete Methods
Hello, really great tutorial for a beginner like me! Is it possible to have an explanation on how a...

Abdul Latif 20/11/2015 14:42
In response to Reading Excel Files Without Saving To Disk In ASP.NET
Could anyone please help me, I am getting : "OfficeOpenXml.ExcelPackage" does not contain a for...

Thomas 20/11/2015 09:44
In response to Cheat Sheet - .NET Framework Exceptions
Hey Mike, nice list. I've also checked your article on how you created the list, but is there any to...

Pramod Gagare 19/11/2015 11:18
In response to Date Formatting in C#

Robby 19/11/2015 08:16
In response to WebMatrix - Database Helpers for IN Clauses
Would it also be possible to override the default query and querysingle methods to include the azure...

Menja 18/11/2015 08:28
In response to Sessions and Shopping Carts
Thank you for a perfect description and that you show all the screenshot at the same time!!! It a...