Area and SplineArea Chart in ASP.Net

In this article we will learn about the Area and SplineArea Chart of ASP.Net.

Background

ASP.Net chart is a powerful control that creates interactive charts. Today we will discuss the Area and SplineArea charts of ASP.Net.  So let us start to learn about these chart type controls step-by-step.

Let us explain it with a practical example by creating a simple web application.

Step 1: Create the table for the chart data
  1. CREATE TABLE [dbo].[orderdet](  
  2.     [id] [int] IDENTITY(1,1) NOT NULL,  
  3.     [Month] [varchar](50) NULL,  
  4.     [Orders] [intNULL,  
  5.  CONSTRAINT [PK_Order TablePRIMARY KEY CLUSTERED   
  6. (  
  7.     [id] ASC  
  8. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ONON [PRIMARY]  
  9. ON [PRIMARY
 Now insert some records into the table using the following script:
  1. SET IDENTITY_INSERT [dbo].[orderdet] ON   
  2.   
  3. GO  
  4. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (1, N'Jan', 0)  
  5. GO  
  6. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (2, N'Feb', 5)  
  7. GO  
  8. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (3, N'March', 20)  
  9. GO  
  10. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (4, N'April', 40)  
  11. GO  
  12. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (5, N'May', 15)  
  13. GO  
  14. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (6, N'Jun', 60)  
  15. GO  
  16. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (7, N'July', 75)  
  17. GO  
  18. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (8, N'Aug', 80)  
  19. GO  
  20. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (9, N'Sep', 85)  
  21. GO  
  22. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (10, N'Oct', 100)  
  23. GO  
  24. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (11, N'Nov', 2)  
  25. GO  
  26. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (12, N'Dec', 90)  
  27. GO  
  28. SET IDENTITY_INSERT [dbo].[orderdet] OFF  
  29. GO 
 After running the preceding script the records in the table will look as follows:
 
 
 
Step 2: Create a Stored Procedure to fetch the records from the database.
  1. Create procedure GetCharData  
  2. (  
  3. @id int =null  
  4.   
  5. )  
  6. as  
  7. begin  
  8. Select Month,Orders from Orderdet  
  9. End 
 Step 3: Create Web Application

Now create the
website with:
  1. "Start" - "All Programs" - "Microsoft Visual Studio 2010".

  2. "File" - "New Project" - "C#" - "Empty Website" (to avoid adding a master page).

  3. Provide the project a name such as AreaAndSplineArea or another as you wish and specify the location.

  4. Then right-click on the Solution Explorer and select "Add New Item" then select Default.aspx page.

  5. Drag and Drop a Chart control from the ToolBox onto the Default.aspx page.
Now the Default.aspx source code will be as follows:
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>  
  2.   
  3. <%@ Register Assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"  
  4.     Namespace="System.Web.UI.DataVisualization.Charting" TagPrefix="asp" %>  
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  6. <html xmlns="http://www.w3.org/1999/xhtml">  
  7. <head runat="server">  
  8.     <title>Article by Vithal Wadje</title>  
  9. </head>  
  10. <body bgcolor="blue">  
  11.     <form id="form1" runat="server">  
  12.     <h4 style="color: White;">  
  13.         Article for C#Corner  
  14.     </h4>  
  15.     <asp:Chart ID="Chart1" runat="server" BackColor="128, 64, 0" BackGradientStyle="LeftRight"  
  16.         BorderlineWidth="0" Height="340px" Palette="None" PaletteCustomColors="Maroon"  
  17.         Width="360px">  
  18.         <Series>  
  19.             <asp:Series Name="Series1" ChartType="Area">  
  20.             </asp:Series>  
  21.         </Series>  
  22.         <ChartAreas>  
  23.             <asp:ChartArea Name="ChartArea1">  
  24.             </asp:ChartArea>  
  25.         </ChartAreas>  
  26.     </asp:Chart>  
  27.     </form>  
  28. </body>  
  29. </html> 
Step 4: Create a method to bind the chart control
 
Now open the default.aspx.cs page and create the following function named Bindchart to bind the Chart Control as in the following:
  1. private void Bindchart()  
  2.    {  
  3.        connection();  
  4.        com = new SqlCommand("GetCharData", con);  
  5.        com.CommandType = CommandType.StoredProcedure;  
  6.        SqlDataAdapter da = new SqlDataAdapter(com);  
  7.        DataSet ds = new DataSet();  
  8.        da.Fill(ds);  
  9.       
  10.        DataTable ChartData=ds.Tables[0];  
  11.   
  12.        //storing total rows count to loop on each Record  
  13.        string[] XPointMember = new string[ChartData.Rows.Count];  
  14.        int[] YPointMember = new int[ChartData.Rows.Count];  
  15.   
  16.        for (int count = 0; count < ChartData.Rows.Count;count++ )  
  17.        {  
  18.            //storing Values for X axis  
  19.            XPointMember[count] = ChartData.Rows[count]["Month"].ToString();  
  20.            //storing values for Y Axis  
  21.            YPointMember[count] = Convert.ToInt32(ChartData.Rows[count]["Orders"]);  
  22.   
  23.   
  24.        }  
  25.      //binding chart control  
  26.        Chart1.Series[0].Points.DataBindXY(XPointMember, YPointMember);  
  27.   
  28.        //Setting width of line  
  29.        Chart1.Series[0].BorderWidth =1;  
  30.        //setting Chart type   
  31.    Chart1.Series[0].ChartType = SeriesChartType.Area ;  
  32.    Chart1.Series[0].ChartType = SeriesChartType.SplineArea;  
  33.   
  34.  //Hide or show chart back GridLines  
  35.  // Chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.Enabled = false;  
  36.   //Chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.Enabled = false;  
  37.   
  38.    //Enabled 3D  
  39.   //Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;  
  40.          
  41.        con.Close();  
  42.   
  43.    } 
 Now, call the preceding function on page load as in the following:
  1. protected void Page_Load(object sender, EventArgs e)  
  2.   {  
  3.       if (!IsPostBack)  
  4.       {  
  5.           Bindchart();  
  6.   
  7.       }  
  8.   } 
 The entire code of the default.aspx.cs page will look as follows:
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.UI;  
  6. using System.Web.UI.WebControls;  
  7. using System.Data.SqlClient;  
  8. using System.Configuration;  
  9. using System.Data;  
  10. using System.Web.UI.DataVisualization.Charting;  
  11.   
  12. public partial class _Default : System.Web.UI.Page  
  13. {  
  14.     private SqlConnection con;  
  15.     private SqlCommand com;  
  16.     private string constr, query;  
  17.     private void connection()  
  18.     {  
  19.         constr = ConfigurationManager.ConnectionStrings["getconn"].ToString();  
  20.         con = new SqlConnection(constr);  
  21.         con.Open();  
  22.   
  23.     }  
  24.     protected void Page_Load(object sender, EventArgs e)  
  25.     {  
  26.         if (!IsPostBack)  
  27.         {  
  28.             Bindchart();  
  29.   
  30.         }  
  31.     }  
  32.    
  33.     private void Bindchart()  
  34.     {  
  35.         connection();  
  36.         com = new SqlCommand("GetCharData", con);  
  37.         com.CommandType = CommandType.StoredProcedure;  
  38.         SqlDataAdapter da = new SqlDataAdapter(com);  
  39.         DataSet ds = new DataSet();  
  40.         da.Fill(ds);  
  41.        
  42.         DataTable ChartData=ds.Tables[0];  
  43.   
  44.         //storing total rows count to loop on each Record  
  45.         string[] XPointMember = new string[ChartData.Rows.Count];  
  46.         int[] YPointMember = new int[ChartData.Rows.Count];  
  47.   
  48.         for (int count = 0; count < ChartData.Rows.Count;count++ )  
  49.         {  
  50.             //storing Values for X axis  
  51.             XPointMember[count] = ChartData.Rows[count]["Month"].ToString();  
  52.             //storing values for Y Axis  
  53.             YPointMember[count] = Convert.ToInt32(ChartData.Rows[count]["Orders"]);  
  54.   
  55.   
  56.         }  
  57.       //binding chart control  
  58.         Chart1.Series[0].Points.DataBindXY(XPointMember, YPointMember);  
  59.   
  60.         //Setting width of line  
  61.         Chart1.Series[0].BorderWidth =1;  
  62.         //setting Chart type 
  63.   // Chart1.Series[0].ChartType = SeriesChartType.Area ; 
  64.     Chart1.Series[0].ChartType = SeriesChartType.SplineArea;  
  65.   
  66.   //Hide or show chart back GridLines  
  67.   // Chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.Enabled = false;  
  68.    //Chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.Enabled = false;  
  69.    
  70.         //Enabled 3D  
  71.    //Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;  
  72.   
  73.           
  74.         con.Close();  
  75.   
  76.     }  

 Now, we have the entire logic to bind the chart from the database, let us run the application. The Area chart will look such as follows:
 
 
 
Now hide the chart Grid Lines as:
  1. Chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.Enabled = false;  
  2. Chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.Enabled = false
Then the Area chart will look as follows:
 
 
 
 Now enable the 3D Style as in the following:
  1. //Enabled 3D  
  2.   Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;  
 
 
Now let us switch to a SplineArea chart as in the following:
  1. Chart1.Series[0].ChartType = SeriesChartType.SplineArea; 
Now run the application and the SplineArea type chart will look as follows:
 
 
 
Now hide the chart Grid Lines of SplineArea chart as in the following:
  1. //Hide or show chart back GridLines  
  2. Chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.Enabled = false;  
  3. Chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.Enabled = false
Now the chart will look as follows:
 
 
 
The preceding is the Normal SplineArea chart. Now let us enable the 3D style as in the following:  
  1. //Enabled 3D  
  2.  Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;  
Now run the application and the SplineArea3D chart will look as follows:
 
 
 
Now from all the preceding explanations we saw how to create and use an Area and SplineArea chart.

Notes
  • Download the Zip file from the attachment for the full source code of the application.
  • Change the connection string in the web.config file to specify your server location.
Summary

My next article explains another chart type of ASP.Net. I hope this article is useful for all readers, if you have any suggestion then please contact me including beginners also.