I was doing some VS2010 migration research over the weekend and found that the Charting options available are really good, we could finally rid ourselves of our old Dundus Charting software. My heart sank when I came back to the other problems in moving from VS2008 to VS2010, but after a bit of searching I found that all the charting options are backwardly compatible.
Things to install
You need to install two items onto your desktop development PC, both are very simple self extractors. It would be best to close Visual Studio before doing this, but I don’t think it would make a lot of difference.
- Microsoft Chart Controls for Microsoft .NET Framework 3.5
- Microsoft Chart Controls Add-on for Microsoft Visual Studio 2008
Following the installation you should now have a new Chart option available in your Data tool bar.
Using the new graph facilities
To create a simple graph I just created a new ASP.NET application with a single ASPX page called default. Dragging a chart from the toolbar to the design surface and switch to the source view will give you the code below.
<asp:Chart ID="Chart1" runat="server">
<Series>
<asp:Series Name="Series1">
</asp:Series>
</Series>
<ChartAreas>
<asp:ChartArea Name="ChartArea1">
</asp:ChartArea>
</ChartAreas>
</asp:Chart>
First thing we need to do is add soem values. I could do this a code behind, but for this demo I’ll just use the page code.
<asp:Series Name="Column" BorderColor="180, 26, 59, 105" YValuesPerPoint="2">
<points>
<asp:DataPoint YValues="45,0" AxisLabel="Jan" />
<asp:DataPoint YValues="34,0" AxisLabel="Feb" />
<asp:DataPoint YValues="67,0" AxisLabel="Mar" />
<asp:DataPoint YValues="31,0" AxisLabel="Apr" />
<asp:DataPoint YValues="27,0" AxisLabel="May" />
<asp:DataPoint YValues="87,0" AxisLabel="Jun" />
<asp:DataPoint YValues="45,0" AxisLabel="Jul" />
<asp:DataPoint YValues="32,0" AxisLabel="Aug" />
</points>
</asp:Series>
Here I’ve added 8 random numbers and given them a label for each month. Next we add in the chart area code.
<asp:ChartArea Name="ChartArea1" BorderColor="64, 64, 64, 64" BorderDashStyle="Solid" BackSecondaryColor="White" BackColor="64, 165, 191, 228" ShadowColor="Transparent" BackGradientStyle="TopBottom">
<area3dstyle Rotation="10" perspective="10" Inclination="15" IsRightAngleAxes="False" wallwidth="0" IsClustered="False"></area3dstyle>
<axisy linecolor="64, 64, 64, 64">
<labelstyle font="Trebuchet MS, 8.25pt, style=Bold" />
<majorgrid linecolor="64, 64, 64, 64" />
</axisy>
<axisx linecolor="64, 64, 64, 64">
<labelstyle font="Trebuchet MS, 8.25pt, style=Bold" />
<majorgrid linecolor="64, 64, 64, 64" />
</axisx>
</asp:ChartArea>
Doing a preview will give you the following error: “Error executing child request for ChartImg.axd”
So what went wrong? Well, as all the charts are generated on the fly, we need to make a few changes in the Web.Config. Add the following lines and all should be well;
Within <system.web><httpHandlers>, add the following: <add path="ChartImg.axd" verb="GET,HEAD" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />
Within <system.webServer><handlers>, add the following:
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
Now when we run the programme, we get the following:
Putting on a bit more flash on our creation
Ok that graph looks a bit dull, so we add a legend and border by adding the following code to the page;
<legends>
<asp:Legend IsTextAutoFit="False" Name="Default" BackColor="Transparent" Font="Trebuchet MS, 8.25pt, style=Bold"></asp:Legend>
</legends>
<borderskin skinstyle="Emboss"></borderskin>
Then we change the type to “Area” by modifying the series properties;
<asp:Series Name="Column" BorderColor="180, 26, 59, 105" YValuesPerPoint="2" ChartType="Area">
Now it looks like this:
Its simple easy to use and very powerful and should be compatible with SharePoint. It may not be Sliverlight, but it work…