RDLC报表ReportViewer

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Reporting.WebForms;

public partial class RDLC_Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            string ReportName = this.Request.QueryString["ReportName"] == null ? "Report1.rdlc" : this.Request.QueryString["ReportName"].ToString();
            BindReportViewer(ReportName);
        }
    }

    private void BindReportViewer(string name)
    {
        switch (name)
        {
                //传递DataSet
            case "Report1.rdlc":
                Microsoft.Reporting.WebForms.ReportDataSource rd = new Microsoft.Reporting.WebForms.ReportDataSource();
                rd.Name = "Rdlc_rdlc";
                rd.Value = SourcesDataTable();
                ReportViewer1.LocalReport.ReportPath = this.MapPath(name);
                ReportViewer1.LocalReport.DataSources.Add(rd);
                this.ReportViewer1.LocalReport.Refresh();
                break;
                //传递报表参数
            case "Report.rdlc":
                ReportViewer1.LocalReport.ReportPath = this.MapPath(name);
                ReportParameter[] parameters = new ReportParameter[1];
                parameters[0] = new ReportParameter("Report_Parameter_0","asdadasd");
                ReportViewer1.LocalReport.SetParameters(parameters);
                this.ReportViewer1.LocalReport.Refresh();
                break;
        }
      
    }

    public DataTable SourcesDataTable()
    {
        DataTable dtSearchType = new DataTable();
        dtSearchType.Columns.Add("ShuJu", typeof(int));
        dtSearchType.Columns.Add("LeiBie", typeof(string));
        dtSearchType.Columns.Add("XuLie", typeof(string));
        dtSearchType.Rows.Add(new object[] { "88", "语文", "小小" });
        dtSearchType.Rows.Add(new object[] { "99", "数学", "小小" });
        dtSearchType.Rows.Add(new object[] { "70", "英语", "小小" });
        dtSearchType.Rows.Add(new object[] { "88", "语文", "大大" });
        dtSearchType.Rows.Add(new object[] { "70", "数学", "大大" });
        dtSearchType.Rows.Add(new object[] { "90", "英语", "大大" });
        dtSearchType.Rows.Add(new object[] { "88", "语文1", "小小" });
        dtSearchType.Rows.Add(new object[] { "99", "数学1", "小小" });
        dtSearchType.Rows.Add(new object[] { "70", "英语1", "小小" });
        dtSearchType.Rows.Add(new object[] { "88", "语文1", "大大" });
        dtSearchType.Rows.Add(new object[] { "70", "数学1", "大大" });
        dtSearchType.Rows.Add(new object[] { "90", "英语1", "大大" });
        return dtSearchType;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        this.Response.Redirect(string.Format("Default.aspx?ReportName={0}", "Report1.rdlc"));
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        this.Response.Redirect(string.Format("Default.aspx?ReportName={0}", "Report.rdlc"));
    }
}

上面实例提供下载:http://download.csdn.net/source/829843

其中由于缓存原因不能直接加载的,需要每次传递参数来更新页面.

1.http://www.cnblogs.com/Carlwave/有非常详细的实例和讲解大家可以去参考下.