Microsoft Chart Controls For ASP.NET

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 http://code.msdn.microsoft.com/mschart.

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: 52206

12 Comments

- 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

@Dhruv

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

@Nish

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

@Manivel,

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.

http://www.microsoft.com/express/Web/

- 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?

Thanks,
Rick

- Mike

@Rick,

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

@@mayur,

I dunno.

Recent Comments

Semil 7/1/2015 7:03 AM
In response to iTextSharp - Drawing shapes and Graphics
I have created a rectangle using above methode. Now I want to add a text in the center of this How I...

Satyabrata Mohapatra 6/30/2015 6:12 PM
In response to Reading Excel Files Without Saving To Disk In ASP.NET
Ahh.....this is awesome. Happy to see after a long time you wrote a article on web form :D...

Marty 6/30/2015 7:16 AM
In response to Posting Data With jQuery AJAX In ASP.NET Razor Web Pages
Mike, you're the Man! Another great article. So incredibly helpful. I'm definitely going to buy your...

Rohan 6/30/2015 5:32 AM
In response to ASP.NET MVC 5 with EF 6 - Working With Files
Very good and helpful tutorial. Thanks. Just wanted to know what would be the max file size limit we...

Fernando 6/30/2015 1:59 AM
In response to Programmatically accessing data from DataSource controls
What if I want to pass parameters natively using the DataSourceSelectArguments object, instead of be...

pankaj 6/29/2015 3:13 PM
In response to How to retain carriage returns or line breaks in an ASP.NET web page
very nice i'm use this in my code thank you.... ...

Mike 6/29/2015 2:22 AM
In response to MVC 5 with EF 6 in Visual Basic - Sorting, Filtering and Paging
This is the first example that I have found that works....

Marty 6/28/2015 4:57 AM
In response to Posting Data With jQuery AJAX In ASP.NET Razor Web Pages
Mike, what if I don't want to render back the text to the browser, but I want to send it some other...

Mike 6/27/2015 4:00 PM
In response to Migrating Classic ASP To ASP.NET Razor Web Pages Part One- Razor Syntax And Visual Basic
have you used any of the code converters to convert classic asp to c#? If so, which one do you have...

deepan 6/27/2015 12:49 PM
In response to How To Send Email In ASP.NET MVC
Your article is very very useful for me...thanks for giving this article ...this is very simple to u...