简单应用ReportViewer控件 - 蒜头

时间:2024-02-26 09:08:49

简单应用ReportViewer控件

首先,将开发好的report部署到Reporting Service上。

1. 写一个类实现接口Microsoft.Reporting.WebForms.IReportServerCredentials,用于Reporting Service的验证,有1个方法,2个属性,根据运行环境来实现这个接口,我这里使用环境的Web程序,Reporting Service需要Window身份验证:

        public bool GetFormsCredentials(out System.Net.Cookie authCookie, out string userName, out string password, out string authority)
        
{
            userName 
= String.Empty;
            password 
= String.Empty;
            authority 
= String.Empty;
            authCookie 
= null;

            
return false;
        }

        
public System.Security.Principal.WindowsIdentity ImpersonationUser
        
{
            
get return null; }
        }


        
public System.Net.ICredentials NetworkCredentials
        
{
            
get
            
{
                
return new NetworkCredential(userName, password, domain);
            }

        }

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

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

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

        protected void Page_Load(object sender, EventArgs e)
        
{
            
if (!IsPostBack)
            
{
                ReportCredential report 
= new ReportCredential();
                ctl_rv_Report.ServerReport.ReportServerCredentials 
= report;

            IList
<ReportParameter> parms = new List<ReportParameter>();
            ReportParameter p 
= new ReportParameter("LocationsLocationID""[Locations].[Location ID].&[" + LocationID + "]");
            parms.Add(p);

            ctl_rv_Report.ServerReport.SetParameters(parms);
            }

        }

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

                ReportCredential report = new ReportCredential();
                ctl_rv_Report.ServerReport.ReportServerCredentials 
= report;

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

            IList<ReportParameter> parms = new List<ReportParameter>();
            ReportParameter p 
= new ReportParameter("LocationsLocationID""[Locations].[Location ID].&[" + LocationID + "]");
            parms.Add(p);

            ctl_rv_Report.ServerReport.SetParameters(parms);

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