将RDL嵌入应用程序

来源:互联网 发布:辉煌电商seo 编辑:程序博客网 时间:2024/04/30 02:53
如果rdl报表已经设计好并部署到报表服务器上,我们已经可以通过报表服务器去访问报表了。不过这还是不够的,因为报表的使用者往往是一些非技术人员或维护人员,并没有服务器的访问权限。所以为了方便报表使用者浏览报表,我们开发者往往会把报表嵌套到网页中。接下来我将为大家介绍报表嵌套网页的方法。

  假设在我的报表服务器中已经存在以下报表。

01

  然后我们打开VS,在网站中新建一个aspx网页,在工具箱里找到 报表--ReportViewer,把控件拖放到页面中。

02

  如果是10.0版本以上的ReportViewer还需要在页面上添加ScriptManager控件。

03

  打开页面的后台代码进行编辑。假设我们要在ReportViewer嵌入RP_STUDENT_COURSE_POINT_STA这个报表。我的做法写一个ReportBind()的方法在PageLoad的时候执行。在这里我的报表服务器设置是通过配置文件获取的,当然你也可以直接使用字符串作为参数去设置服务器地址。

复制代码
 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  8 public partial class Page_ReportView : System.Web.UI.Page 9 {10     protected void Page_Load(object sender, EventArgs e)11     {12         ReportBind();13     }14 15     private void ReportBind()16     {17         ReportViewer1.ServerReport.ReportServerUrl = new Uri(CommonDefine.getReportServerUrl());//CommonDefine.getReportServerUrl()方法通过配置文件读取报表服务器的地址18         ReportViewer1.ServerReport.ReportPath = CommonDefine.getReportProjectName() + "RP_STUDENT_COURSE_POINT_STA";//CommonDefine.getReportProjectName()方法通过配置文件读取报表所在目录19         ReportViewer1.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote;//设定报表的访问为远程访问20         ReportViewer1.DataBind();21     }22 }
复制代码

   CommonDefine类代码如下:

复制代码
 1 using System; 2 using System.Collections.Generic; 3 using System.Web; 4 using System.Configuration; 5  6 /// <summary> 7 ///CommonDefine 的摘要说明 8 /// </summary> 9 public class CommonDefine10 {11     public CommonDefine()12     {13         //14         //TODO: 在此处添加构造函数逻辑15         //16     }17 18     /// <summary>19     /// 取报表服务器地址20     /// </summary>21     /// <returns></returns>22     public static string getReportServerUrl()23     {24         return ConfigurationManager.AppSettings.Get("ReportServer").ToString();25 26     }27 28     /// <summary>29     /// 取报表项目名30     /// </summary>31     /// <returns></returns>32     public static string getReportProjectName()33     {34         return ConfigurationManager.AppSettings.Get("ReportProjectName").ToString();35     }36 }
复制代码

  web.config文件(报表服务器地址的配置):

复制代码
    <appSettings>        <!--报表服务器地址-->        <add key="ReportServer" value="http://localhost/ReportServer/"/>        <!--报表项目名称-->        <add key="ReportProjectName" value="/MYTEST_REPORT_PROJECT/"/>    </appSettings>
复制代码

  如果需要在后台为报表传递参数,可以使用如下代码:

复制代码
 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 Microsoft.Reporting.WebForms; 8  9 public partial class Page_ReportView : System.Web.UI.Page10 {11     protected void Page_Load(object sender, EventArgs e)12     {13         if (!Page.IsPostBack)14         {15             ReportBind();16             SetReprotParameters();17         }18     }19 20     private void ReportBind()21     {22         ReportViewer1.ServerReport.ReportServerUrl = new Uri(CommonDefine.getReportServerUrl());    //CommonDefine.getReportServerUrl()方法通过配置文件读取报表服务器的地址23         ReportViewer1.ServerReport.ReportPath = CommonDefine.getReportProjectName() + "RP_STUDENT_COURSE_POINT_STA";    //CommonDefine.getReportProjectName()方法通过配置文件读取报表所在目录24         ReportViewer1.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote;  //设定报表的访问为远程访问25         //ReportViewer1.DataBind();26     }27 28     private void SetReprotParameters()29     {30         List<ReportParameter> paramList = new List<ReportParameter>();31         paramList.Add(new ReportParameter("STUDENT_NO", "STD001", true));32         paramList.Add(new ReportParameter("STUDENT_NAME", "", true));33         ReportViewer1.ServerReport.SetParameters(paramList);34     }35 }
复制代码

   在浏览器中查看页面。

05

  现在已经成功把报表嵌入到页面了。

原创粉丝点击