简单应用ReportViewer控件

时间:2021-07-27 17:09:27

首先,将开发好的report部署到Reporting Service上。
简单应用ReportViewer控件
1. 写一个类实现接口Microsoft.Reporting.WebForms.IReportServerCredentials,用于Reporting Service的验证,有1个方法,2个属性,根据运行环境来实现这个接口,我这里使用环境的Web程序,Reporting Service需要Window身份验证:

简单应用ReportViewer控件        public bool GetFormsCredentials(out System.Net.Cookie authCookie, out string userName, out string password, out string authority)
简单应用ReportViewer控件简单应用ReportViewer控件        
{
简单应用ReportViewer控件            userName 
= String.Empty;
简单应用ReportViewer控件            password 
= String.Empty;
简单应用ReportViewer控件            authority 
= String.Empty;
简单应用ReportViewer控件            authCookie 
= null;
简单应用ReportViewer控件
简单应用ReportViewer控件            
return false;
简单应用ReportViewer控件        }

简单应用ReportViewer控件        
public System.Security.Principal.WindowsIdentity ImpersonationUser
简单应用ReportViewer控件简单应用ReportViewer控件        
{
简单应用ReportViewer控件简单应用ReportViewer控件            
get return null; }
简单应用ReportViewer控件        }

简单应用ReportViewer控件
简单应用ReportViewer控件        
public System.Net.ICredentials NetworkCredentials
简单应用ReportViewer控件简单应用ReportViewer控件        
{
简单应用ReportViewer控件            
get
简单应用ReportViewer控件简单应用ReportViewer控件            
{
简单应用ReportViewer控件                
return new NetworkCredential(userName, password, domain);
简单应用ReportViewer控件            }

简单应用ReportViewer控件        }

简单应用ReportViewer控件

2. 在页面上添加ReportViewer控件,设置属性:

简单应用ReportViewer控件          <rsweb:ReportViewer ID="ctl_rv_Report" runat="server" Font-Names="Verdana" Font-Size="8pt"
简单应用ReportViewer控件            Height
="400px" ProcessingMode="Remote" ShowToolBar="False" Width="100%" AsyncRendering="False" InternalBorderColor="Transparent" PromptAreaCollapsed="True" ShowParameterPrompts="False">
简单应用ReportViewer控件            
<ServerReport ReportPath="/Folder/Name" ReportServerUrl="http://site/reportserver" />
简单应用ReportViewer控件        
</rsweb:ReportViewer>

主要的是ProcessingMode="Remote",有两种模式,另外一种是Local。如果是Local,下面就是<LocalReport.....
另外重要的是ReportPath和ReportServerUrl,设置正确。
3. 代码:

简单应用ReportViewer控件        protected void Page_Load(object sender, EventArgs e)
简单应用ReportViewer控件简单应用ReportViewer控件        
{
简单应用ReportViewer控件            
if (!IsPostBack)
简单应用ReportViewer控件简单应用ReportViewer控件            
{
简单应用ReportViewer控件                ReportCredential report 
= new ReportCredential();
简单应用ReportViewer控件                ctl_rv_Report.ServerReport.ReportServerCredentials 
= report;
简单应用ReportViewer控件
简单应用ReportViewer控件            IList
<ReportParameter> parms = new List<ReportParameter>();
简单应用ReportViewer控件            ReportParameter p 
= new ReportParameter("LocationsLocationID""[Locations].[Location ID].&[" + LocationID + "]");
简单应用ReportViewer控件            parms.Add(p);
简单应用ReportViewer控件
简单应用ReportViewer控件            ctl_rv_Report.ServerReport.SetParameters(parms);
简单应用ReportViewer控件            }

简单应用ReportViewer控件        }

简单应用ReportViewer控件

设置验证,report是实现了接口的类的一个实例,

简单应用ReportViewer控件                ReportCredential report = new ReportCredential();
简单应用ReportViewer控件                ctl_rv_Report.ServerReport.ReportServerCredentials 
= report;

添加参数,根据report service里的report情况添加参数:

简单应用ReportViewer控件            IList<ReportParameter> parms = new List<ReportParameter>();
简单应用ReportViewer控件            ReportParameter p 
= new ReportParameter("LocationsLocationID""[Locations].[Location ID].&[" + LocationID + "]");
简单应用ReportViewer控件            parms.Add(p);
简单应用ReportViewer控件
简单应用ReportViewer控件            ctl_rv_Report.ServerReport.SetParameters(parms);
简单应用ReportViewer控件

可以在某个postback后设置参数,比如点击button,dropdownlist selectedindexchanged事件,只有设置了参数后,reportViewer控件才会将RS中的结果显示在页面上了。

简单应用ReportViewer控件