在ASP.NET中使用SqlServer Reporting Service样例

经过一年多努力,本月底项目进入试运行.在本次项目中使用SqlServer Reporting Service作为报表开发的工具,现将操作记录在此,无论报表还是单证其展示方式一般分为两种:
1、 在页面中某个区域直接显示
2、 点击某个按钮触发后弹出新窗口显示
为此基类ApplicationBasePage.cs页面提供了如下两个方法

/// <summary>
    
/// 得到报表窗口的URL
    
/// </summary>
    
/// <param name="reportCode">报表代码,如rp_pr_qa_001</param>
    
/// <param name="paraName">参数名称数组,与参数值数组对应</param>
    
/// <param name="paraValue">参数值数组,与参数名称数组对于</param>
    
/// <param name="viewFormat">显示格式代码,0:显示参数、工具栏,1:不显示参数、显示工具栏,2:不显示参数、工具栏</param>

     protected   string  GetReportUrl( string  reportCode,  string [] paraName,  string [] paraValue,  int  viewFormat)
    
{
        
//报表的基础地址
        
//string reportingServerUrlBase = "http://10.3.130.72/ReportServer?/BpmsReports/";//ReportServer
        string reportingServerUrlBase = ConfigurationManager.AppSettings["ReportServer"].ToString();
        
//参数拼接
        string paras = "";
        
int paraCount = paraName.Length;
        
if (paraValue.Length < paraCount)
            paraCount 
= paraValue.Length;
        
for (int i = 0; i < paraCount; i++)
        
{
            paras 
+= "&" + paraName[i] + "=" + Server.UrlEncode(paraValue[i]);
        }

        
//显示格式
        string format = "";
        
switch (viewFormat)
        
{
            
case 0:
                format 
= "&rc:toolbar=true&rc:parameters=true&rc:Zoom=Page%20Width";
                
break;
            
case 1:
                format 
= "&rc:toolbar=true&rc:parameters=false&rc:Zoom=Page%20Width";
                
break;
            
case 2:
                format 
= "&rc:toolbar=false&rc:parameters=false&rc:Zoom=Page%20Width";
                
break;
            
default:
                format 
= "&rc:toolbar=true&rc:parameters=true&rc:Zoom=Page%20Width";
                
break;
        }

        
//组织最终报表URL
        string reportUrl = reportingServerUrlBase + reportCode + paras + format;

        
return reportUrl;
    }

 

/// <summary>
    
/// 打开报表窗口
    
/// </summary>
    
/// <param name="reportCode">报表代码,如rp_pr_qa_001</param>
    
/// <param name="paraName">参数名称数组,与参数值数组对应</param>
    
/// <param name="paraValue">参数值数组,与参数名称数组对于</param>
    
/// <param name="viewFormat">显示格式代码,暂时只有两种,0:显示title,1:不显示title</param>

     protected   void  PopUpReport( string  reportCode,  string [] paraName,  string [] paraValue,  int  viewFormat)
    
{
        
//获得报表地址
        string reportUrl = GetReportUrl(reportCode, paraName, paraValue, viewFormat);

        
//弹出报表窗口
        StringBuilder MyBuilder = new StringBuilder();
        MyBuilder.Append(
"<script language='javascript'>");
        MyBuilder.Append(
"{open('" + reportUrl + "','aa','width='+screen.width+' height='+screen.height+' top=0 left=0 toolbar=no menubar=no resizable=yes status=yes');}");
        MyBuilder.Append(
"</script>");
        
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "open", MyBuilder.ToString());
    }

调用事例
1.在页面中某个区域直接显示

合同号 < asp:TextBox  ID ="TextBox1"  runat ="server" ></ asp:TextBox >     
< asp:Button  ID ="btnViewReportInPage"  runat ="server"  Text ="页内显示报表"  OnClick ="btnViewReportInPage_Click"   />
< asp:Button  ID ="btnViewReportOutPage"  runat ="server"  Text ="弹出页显示报表"  OnClick ="btnViewReportOutPage_Click"   />
< br  />
< iframe  id ="RptFrame"  runat ="server"  width ="100%"  height ="500" ></ iframe >

 

protected   void  btnViewReportInPage_Click( object  sender, EventArgs e)
 
{
        
string reportCode = "rp_pr_qa_136";
        
string[] paraName = new string[] {"ContractNoSys"};
       
string[] paraValue = new string[1]; 
        paraValue[
0= TextBox1.Text;
       ReportURL 
= GetReportUrl(reportCode, paraName, paraValue, 1);
       RptFrame.Attributes.Add(
"src", ReportURL);       
   }

2.点击某个按钮触发后弹出新窗口显示

protected   void  btnViewReportOutPage_Click( object  sender, EventArgs e)
   
{
       
string reportCode = "rp_pr_qa_136";
       
string[] paraName = new string[] "ContractNoSys" };
       
string[] paraValue = new string[1];
       paraValue[
0= TextBox1.Text;
        PopUpReport(reportCode, paraName, paraValue, 
1);
   }



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值