In
this article I am going to explain How to pass a parameter to RDLC report in asp.net
Description:
In
the previous article I have explained Create RDLC report using Store procedure,
Display records in Gridview according to DropDown Selection in Asp.net and Howto split the string in Asp.net
I
have a table Tb_Student and having records. I want to filter the records and
show in RDLC report based on city of Students.
Implementation: 
I
have create a store to fetch and filter the record from table
Create Proc
Sp_GetStudentData
(
@city varchar(50)
)
As begin
if @city ='All'
Select * from Tb_Student
Else
Select * from Tb_Student where
Student_Address like '%'+@city+'%'
end
Follow
the steps to create RDLC report using Store procedure in asp.net.
After
complete all steps you see an App_code folder created in project/website with
DataSet (DemoDataSet) as shown in below attached snapshot:
Now
add a webform to project. Drag and drop the required control from toolbox to
webform (ReportViwer and ScriptManager). 
HTML Markup
of webform:
  <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
         
<table><tr><td>City Name:</td><td><asp:TextBox ID="txtcity" runat="server"></asp:TextBox></td></tr>
            <tr><td></td><td> <asp:Button ID="Button1" runat="server" Text="Search"/></td></tr>
       
</table>    
        <rsweb:ReportViewer ID="RptviwerStudent" runat="server"></rsweb:ReportViewer>
Add
the namespace to code file
C#:
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using
Microsoft.Reporting.WebForms;
VB:
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Imports
Microsoft.Reporting.WebForms
Binding the
Reporviewer :
Write
the below given code to bind the reportviewer
C#:
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["connection"].ToString());
   
protected void Page_Load(object sender, EventArgs e)
   
{
       
if (!IsPostBack)
       
{
            BindReport();
       
}
   
}
   
private void BindReport()
   
{
       
try
       
{
            RptviwerStudent.ProcessingMode = ProcessingMode.Local;
            //report path
           
RptviwerStudent.LocalReport.ReportPath = Server.MapPath("~/RptStudent.rdlc");            
            SqlDataAdapter adp = new SqlDataAdapter("Sp_GetStudentData", con);
            adp.SelectCommand.CommandType = CommandType.StoredProcedure;
           
adp.SelectCommand.Parameters.AddWithValue("@city", "All");
            //object of Dataset DemoDataSet
            DemoDataSet ds = new DemoDataSet();
            adp.Fill(ds,"Sp_GetStudentData");
            //Datasource for report
            ReportDataSource datasource = new ReportDataSource("DataSet1", ds.Tables[0]);
            RptviwerStudent.Width = 600;
           
RptviwerStudent.LocalReport.DataSources.Clear();
           
RptviwerStudent.LocalReport.DataSources.Add(datasource);
       
}
       
catch (Exception ex)
       
{
       
}
    }
VB:
Private con As New SqlConnection(ConfigurationManager.ConnectionStrings("connection").ToString())
   
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
       
If Not IsPostBack Then
            BindReport()
       
End If
   
End Sub
   
Public Sub BindReport()
       
Try
            RptviwerStudent.ProcessingMode = ProcessingMode.Local
            'report path
           
RptviwerStudent.LocalReport.ReportPath = Server.MapPath("~/RptStudent.rdlc")
            Dim adp As New SqlDataAdapter("Sp_GetStudentData", con)
       
    adp.SelectCommand.CommandType
= CommandType.StoredProcedure
           
adp.SelectCommand.Parameters.AddWithValue("@city", "All")
            'object of Dataset DemoDataSet
            Dim ds As New DemoDataSet()
            adp.Fill(ds, "Sp_GetStudentData")
            'Datasource for report
            Dim datasource As New ReportDataSource("DataSet1", ds.Tables(0))
            RptviwerStudent.Width = 600
           
RptviwerStudent.LocalReport.DataSources.Clear()
           
RptviwerStudent.LocalReport.DataSources.Add(datasource)
       
Catch ex As Exception
       
End Try
    End Sub
Search the
records:
On
button click write the given code search the records based on city name.
C#:
protected void Button1_Click(object sender, EventArgs e)
   
{
       
RptviwerStudent.ProcessingMode = ProcessingMode.Local;
       
RptviwerStudent.LocalReport.ReportPath = Server.MapPath("~/RptStudent.rdlc");
       
SqlDataAdapter adp = new SqlDataAdapter("Sp_GetStudentData", con);
       
adp.SelectCommand.CommandType = CommandType.StoredProcedure;
       
adp.SelectCommand.Parameters.AddWithValue("@city",txtcity.Text);
       
DemoDataSet ds = new DemoDataSet();
       
adp.Fill(ds, "Sp_GetStudentData");
       
ReportDataSource datasource = new ReportDataSource("DataSet1", ds.Tables[0]);
       
RptviwerStudent.Width = 600;
       
RptviwerStudent.LocalReport.DataSources.Clear();
       
RptviwerStudent.LocalReport.DataSources.Add(datasource);
    }
VB:
Protected Sub
Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       
RptviwerStudent.ProcessingMode = ProcessingMode.Local
       
RptviwerStudent.LocalReport.ReportPath = Server.MapPath("~/RptStudent.rdlc")
       
Dim adp As New SqlDataAdapter("Sp_GetStudentData", con)
       
adp.SelectCommand.CommandType = CommandType.StoredProcedure
       
adp.SelectCommand.Parameters.AddWithValue("@city", txtcity.Text)
     
  Dim ds As New DemoDataSet()
       
adp.Fill(ds, "Sp_GetStudentData")
       
Dim datasource As New ReportDataSource("DataSet1", ds.Tables(0))
       
RptviwerStudent.Width = 600
       
RptviwerStudent.LocalReport.DataSources.Clear()
       
RptviwerStudent.LocalReport.DataSources.Add(datasource)
    End Sub
Now
build, run the project and check out the result.
Result:
    In this article we have learn how to pass parameter to RDLC reoprt in Asp.net (C#, VB). I hope you enjoyed this article. 


 
 
.png) 

Very helpful!
ReplyDeleteGlad to know this article helps you. Keep visiting for more articles.
Delete