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

原创 2007年09月25日 22:58:00

经过一年多努力,本月底项目进入试运行.在本次项目中使用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);
   }



 

ASP.NET服务器控件使用之Reportviewer 报表

1.       Reportviewer 报表 1.1. Reportviewer控件 注:本教程附2个事例: l  演练:在本地处理模式下将数据库数据源与 ReportViewer We...
  • oemoon
  • oemoon
  • 2012年03月10日 08:26
  • 15666

在ASP.NET中调用Report Service 报表流程

1、定义Report Service 报表2、ASP.NET展示页面代码    Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %...
  • emailqjc
  • emailqjc
  • 2011年07月12日 11:41
  • 2519

sql server 2012 报表开发(2) reporting service 中制作分组折叠式报表

前面我们学习了sql server 2012 如何使用Reporting Service 2012制作报表 ,对Reporting Service制作报表,有了初步的了解,这里我主要记录一下,如何做一...
  • cxx2325938
  • cxx2325938
  • 2015年09月03日 13:53
  • 1320

Reporting Services – 报表服务介绍

SQL Reporting Services 提供的功能 一般常用的 BI 报表功能,SQL Reporting Service 都有,SQL Reporting Services 报表功能含以...
  • dong_007_007
  • dong_007_007
  • 2013年11月16日 11:36
  • 1903

asp.net学习总结——ADO.net(对Sql Server进行操作的数据访问类)

ADO.net(对Sql Server进行操作的数据访问类)
  • sun15732621550
  • sun15732621550
  • 2016年06月11日 21:40
  • 1046

毕设做网站(asp.net+SqlServer)的同学可以参考一下(集合帖)

1、代码需要在页面第一次载入时执行,可以用IsPostBack http://m.blog.csdn.net/blog/dinglang_2009/6511426 2.利用vs工具箱中的登录控件实现...
  • liimylife
  • liimylife
  • 2015年04月25日 11:25
  • 620

未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker

昨晚遇到的这个问题,也知道Notifications service依赖底层的Service broker的。本以为只需要执行以下脚本对数据库启用Service broker即可。 alter dat...
  • mss359681091
  • mss359681091
  • 2016年06月21日 14:00
  • 2727

Openstack : 2、devstack创建虚拟主机

devstack创建虚拟主机步骤 devstack环境:是通过virt-manager安装的centos7minimal环境下的ocata版本的devstack。 概览:分为启动devstack和在d...
  • qingyuanluofeng
  • qingyuanluofeng
  • 2017年04月11日 23:37
  • 665

.net web service 调用的几种方式

首先当然是开发一个webservice,我们来个简单的计算器的实现,代码如下 [c-sharp] view plain copy using Sys...
  • zxxSsdsd
  • zxxSsdsd
  • 2016年09月08日 21:50
  • 382

.NET MVC 入门+连接数据库(SQL SERVER)

http://www.w3school.com.cn/aspnet/mvc_intro.asp
  • novia1234
  • novia1234
  • 2014年08月19日 10:55
  • 2923
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在ASP.NET中使用SqlServer Reporting Service样例
举报原因:
原因补充:

(最多只允许输入30个字)