zoukankan      html  css  js  c++  java
  • 在ASP.NET中使用SqlServer Reporting Service样例

    在项目中使用SqlServer Reporting Service作为报表开发的工具,现将操作记录在此,无论报表还是单证其展示方式一般分为两种:
    1、 在页面中某个区域直接显示
    2、 点击某个按钮触发后弹出新窗口显示
    为此基类ApplicationBasePage.cs页面提供了如下两个方法
     1/// <summary>
     2    /// 得到报表窗口的URL
     3    /// </summary>
     4    /// <param name="reportCode">报表代码,如rp_pr_qa_001</param>
     5    /// <param name="paraName">参数名称数组,与参数值数组对应</param>
     6    /// <param name="paraValue">参数值数组,与参数名称数组对于</param>
     7    /// <param name="viewFormat">显示格式代码,0:显示参数、工具栏,1:不显示参数、显示工具栏,2:不显示参数、工具栏</param>

     8    protected string GetReportUrl(string reportCode, string[] paraName, string[] paraValue, int viewFormat)
     9    {
    10        //报表的基础地址
    11        //string reportingServerUrlBase = "http://10.3.130.72/ReportServer?/BpmsReports/";//ReportServer
    12        string reportingServerUrlBase = ConfigurationManager.AppSettings["ReportServer"].ToString();
    13        //参数拼接
    14        string paras = "";
    15        int paraCount = paraName.Length;
    16        if (paraValue.Length < paraCount)
    17            paraCount = paraValue.Length;
    18        for (int i = 0; i < paraCount; i++)
    19        {
    20            paras += "&" + paraName[i] + "=" + Server.UrlEncode(paraValue[i]);
    21        }

    22        //显示格式
    23        string format = "";
    24        switch (viewFormat)
    25        {
    26            case 0:
    27                format = "&rc:toolbar=true&rc:parameters=true&rc:Zoom=Page%20Width";
    28                break;
    29            case 1:
    30                format = "&rc:toolbar=true&rc:parameters=false&rc:Zoom=Page%20Width";
    31                break;
    32            case 2:
    33                format = "&rc:toolbar=false&rc:parameters=false&rc:Zoom=Page%20Width";
    34                break;
    35            default:
    36                format = "&rc:toolbar=true&rc:parameters=true&rc:Zoom=Page%20Width";
    37                break;
    38        }

    39        //组织最终报表URL
    40        string reportUrl = reportingServerUrlBase + reportCode + paras + format;
    41
    42        return reportUrl;
    43    }

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

    51    protected void PopUpReport(string reportCode, string[] paraName, string[] paraValue, int viewFormat)
    52    {
    53        //获得报表地址
    54        string reportUrl = GetReportUrl(reportCode, paraName, paraValue, viewFormat);
    55
    56        //弹出报表窗口
    57        StringBuilder builder = new StringBuilder();
    58        builder.Append("<script language='javascript'>");
    59        builder.Append("{open('" + reportUrl + "','aa','width='+screen.width+' height='+screen.height+' top=0 left=0 toolbar=no menubar=no resizable=yes status=yes');}");
    60        builder.Append("</script>");
    61        this.Page.ClientScript.RegisterStartupScript(this.GetType(), "open", builder.ToString());
    62    }
    调用事例
    1.在页面中某个区域直接显示
    1合同号<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>   
    2    <asp:Button ID="btnViewReportInPage" runat="server" Text="页内显示报表" OnClick="btnViewReportInPage_Click" />
    3    <asp:Button ID="btnViewReportOutPage" runat="server" Text="弹出页显示报表" OnClick="btnViewReportOutPage_Click" />
    4    <br />
    5    <iframe id="RptFrame" runat="server" width="100%" height="500"></iframe>
    1protected void btnViewReportInPage_Click(object sender, EventArgs e)
    2    {
    3        string reportCode = "rp_pr_qa_136";
    4        string[] paraName = new string[] {"ContractNoSys"};
    5        string[] paraValue = new string[1]; 
    6        paraValue[0= TextBox1.Text;
    7        ReportURL = GetReportUrl(reportCode, paraName, paraValue, 1);
    8        RptFrame.Attributes.Add("src", ReportURL);       
    9    }
    2.点击某个按钮触发后弹出新窗口显示
    1protected void btnViewReportOutPage_Click(object sender, EventArgs e)
    2    {
    3        string reportCode = "rp_pr_qa_136";
    4        string[] paraName = new string[] "ContractNoSys" };
    5        string[] paraValue = new string[1];
    6        paraValue[0= TextBox1.Text;
    7        PopUpReport(reportCode, paraName, paraValue, 1);
    8    }
  • 相关阅读:
    在 Windows 10 中创建任何大小的虚拟测试文件的 2 种方法
    最近的github又不稳了。。ip host 大法来
    windows mklink /d /h /j 精讲
    kafka-manager配置和使用
    Java——七种垃圾收集器+JDK11最新ZGC
    聚簇索引和非聚簇索引(通俗易懂 言简意赅)
    【转载】Java中的锁机制 synchronized & 偏向锁 & 轻量级锁 & 重量级锁 & 各自优缺点及场景 & AtomicReference
    都1202年了奉劝那些还在用centos6的gs,赶紧切ubuntu-Centos6 升级 gcc 惨痛教训
    Tamper Chrome – 请求修改扩展,可用于Web安全测试
    线程、线程池三大方法、七大参数、四种策略
  • 原文地址:https://www.cnblogs.com/jiangshaofen/p/792122.html
Copyright © 2011-2022 走看看