In this article I will explain a short step by step tutorial with example on how to add charts to the ASP.Net ReportViewer control. I will explain with an example to display a Line Chart in the RDLC Report ReportViewer in ASP.Net using C# and VB.Net.
I will be making use of a Typed DataSet for populating the Chart data in the RDLC Report.
 
 
Database
Here I am making use of Microsoft’s Northwind Database. You can download it from here.
 
 
1. Add Typed DataSet to the ASP.Net Website
Since I am using disconnected RDLC Reports we will make use of Typed DataSet to populate the RDLC Reports with data from database.
Display Line Chart in RDLC Report in ASP.Net using C# and VB.Net
 
 
2. Adding DataTable to the Typed DataSet
Our next step would be to add a DataTable to the Type DataSet.
Display Line Chart in RDLC Report in ASP.Net using C# and VB.Net
 
 
3. Adding Columns or fields to DataTable
In the DataTable we need to specify the column names that we want to display in the RDLC Report.
Note: The Column Names of the DataTable must exactly match with the actual column or alias names in the query.
 
Display Line Chart in RDLC Report in ASP.Net using C# and VB.Net
 
By default all the columns are of String Data Type but you can also change the data type as per your need using the Properties window.
Display Line Chart in RDLC Report in ASP.Net using C# and VB.Net
 
 
4. Adding the RDLC Report
Using the Add New Item option in Visual Studio you need to add new RDLC Report.
Display Line Chart in RDLC Report in ASP.Net using C# and VB.Net
 
 
5. Add Chart to the Report
The above action will create a Blank Report. You will need to right click and Click Insert and then Chart as shown below.
Display Line Chart in RDLC Report in ASP.Net using C# and VB.Net
 
 
6. Choose the Chart Type
Next you need to choose the type of Chart you want to use in your Report from the Select Chart Type dialog.
Display Line Chart in RDLC Report in ASP.Net using C# and VB.Net
 
 
7. Choose the DataSet
Now we need to choose the DataSet that will act as the DataSource for the RDLC Report. Thus we need to select the Custom DataSet that we have created earlier.
Display Line Chart in RDLC Report in ASP.Net using C# and VB.Net
 
 
8. Set the Data Fields
Once the DataSet is chosen, the Line Chart will be displayed in the RDLC Report. Now we need to
1. Right Click on the Line Chart.
2. Click the Data Fields section and select the Field for the Line Chart’s Data Field by clicking on the small icon as shown below. I have chosen OrderId as Data Field.
Note: Data Field is a column that will determine the size of each Line in a Line chart.
 
3. Repeat the same procedure for the Category fields. I have chosen, Ship City as the Category field.
Display Line Chart in RDLC Report in ASP.Net using C# and VB.Net
 
You will notice that an aggregate SUM function is automatically applied to the OrderId.
Display Line Chart in RDLC Report in ASP.Net using C# and VB.Net
 
But since I don’t want to SUM OrderId, I will have to modify it to make use of COUNT aggregate function by right clicking the Data Field section and then clicking Series Properties.
Display Line Chart in RDLC Report in ASP.Net using C# and VB.Net
 
In the Series Properties Window, you can easily change the Formula you want to use. Since I need to display Order Distribution in various Cities, I have used COUNT aggregate function.
Display Line Chart in RDLC Report in ASP.Net using C# and VB.Net
 
 
9. Displaying Labels on Chart and Changing Title
Our next job is to display the values of each Line in Line Chart. Thus you need to right click on the Chart and then click Show Data Labels.
Display Line Chart in RDLC Report in ASP.Net using C# and VB.Net
 
Then you need to double click on Chart Title and type in the appropriate Title for the Chart.
Display Line Chart in RDLC Report in ASP.Net using C# and VB.Net
 
You can also hide the Axis Title by right clicking on each Axis Title and then unchecking as shown below.
Display Line Chart in RDLC Report in ASP.Net using C# and VB.Net
 
 
10. Adding Report Viewer to the page
In order to display the Report we will need to add ReportViewer control to the page from the Toolbox. The ReportViewer controls requires ScriptManager on the page.
Display Line Chart in RDLC Report in ASP.Net using C# and VB.Net
 
Once you add the ReportViewer control to the page, your page must look as below.
<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <rsweb:ReportViewer ID="ReportViewer1" runat="server" Width="600">
    </rsweb:ReportViewer>
    </form>
</body>
</html>
 
 
11. Populating the RDLC Report from Database
Below is the code to populate the RDLC Report from database. The first statement notifies the ReportViewer control that the Report is of type Local Report.
Then the path of the Report is supplied to the ReportViewer, after that the CustomDataSet is populated with records from the Orders Table and is set as ReportSource to the Report.
C#
Namespaces
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
 
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        ReportViewer1.ProcessingMode = ProcessingMode.Local;
        ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/Report.rdlc");
        CustomDataSet dsOrders = GetData();
        ReportDataSource datasource = new ReportDataSource("dsOrders", dsOrders.Tables[0]);
        ReportViewer1.LocalReport.DataSources.Clear();
        ReportViewer1.LocalReport.DataSources.Add(datasource);
    }
}
 
private CustomDataSet GetData()
{
    string query = "SELECT ShipCity, OrderId FROM Orders WHERE ShipCountry = 'France'";
    string conString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
    SqlCommand cmd = new SqlCommand(query);
    using (SqlConnection con = new SqlConnection(conString))
    {
        using (SqlDataAdapter sda = new SqlDataAdapter())
        {
            cmd.Connection = con;
 
            sda.SelectCommand = cmd;
            using (CustomDataSet dsOrders = new CustomDataSet())
            {
                sda.Fill(dsOrders, "DataTable1");
                return dsOrders;
            }
        }
    }
}
 
VB.Net
Namespaces
Imports System.Data
Imports System.Configuration
Imports System.Data.SqlClient
Imports Microsoft.Reporting.WebForms
 
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Not IsPostBack Then
        ReportViewer1.ProcessingMode = ProcessingMode.Local
        ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/Report.rdlc")
        Dim dsOrders As CustomDataSet = GetData()
        Dim datasource As New ReportDataSource("dsOrders", dsOrders.Tables(0))
        ReportViewer1.LocalReport.DataSources.Clear()
        ReportViewer1.LocalReport.DataSources.Add(datasource)
    End If
End Sub
 
Private Function GetData() As CustomDataSet
    Dim query As String = "SELECT ShipCity, OrderId FROM Orders WHERE ShipCountry = 'France'"
    Dim conString As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
    Dim cmd As New SqlCommand(query)
    Using con As New SqlConnection(conString)
        Using sda As New SqlDataAdapter()
            cmd.Connection = con
 
            sda.SelectCommand = cmd
            Using dsOrders As New CustomDataSet()
                sda.Fill(dsOrders, "DataTable1")
                Return dsOrders
            End Using
        End Using
    End Using
End Function
 
 
Screenshot
Display Line Chart in RDLC Report in ASP.Net using C# and VB.Net
 
 
Demo
 
 
Downloads