zoukankan      html  css  js  c++  java
  • 一個調用Report Services報表的類

    public class ReportOperation
        {
            private Page objPage;
            public ReportOperation(Page Page1)
            {
                this.objPage = Page1;
            }

            public string ms_ReportServer
            {
                get{return System.Configuration.ConfigurationSettings.AppSettings["ReportServer"];}
            }
           public void OpenReport(string s_aReportId, string s_aParameter)
           {
               string s_JS = "<script language='javascript'>" +
                           "var o_Win=window.open('" + GetReportURL(s_aReportId, s_aParameter) + "'" +
                           ",'','location=no,status=no,toolbar=no,width=700,height=600,top=50,left=50');</script>";
               objPage.RegisterStartupScript("0001", s_JS); //開啟報表

           }

            public string GetReportURL(string s_aReportId, string s_aParameter)
            {
                if (s_aReportId == "") return string.Empty;
                // &rc:標示報表監視器參數
                // Parameters=false 隱藏報表參數列
                // Toolbar=true 顯示工具列
                // Command=Render 呈現報表
                // ClearSession=true
                // Stylesheet=hr_htmlviewer 指定要应用于 HTML 查看器的样式表
                string s_ReportUrl = this.ms_ReportServer + "?/" + s_aReportId
                    + "&rc:Parameters=false&rc:Toolbar=true&rc:Command=Render&rc:ClearSession=true"
                    + "&rc:Stylesheet=hr_htmlviewer" + EncodeParams(s_aParameter); //開啟新視窗的路徑
                return s_ReportUrl;
            }

            private string EncodeParams(string s_aParams)
            {

                if (s_aParams == "") return "";
                if (s_aParams.Length > 0 && s_aParams.IndexOf("=") == -1)
                    throw new Exception("報表參數格式錯誤.正確格式:參數名=參數值&參數名=參數值");

                s_aParams = s_aParams.Replace("'", ""); //去掉特殊字符.否則開啟報表時會出錯.20050326 Modify

                if (s_aParams.Length > 0 && s_aParams.IndexOf("&") == 0)
                    s_aParams = s_aParams.Substring(1);

                string s_Params = string.Empty;

                string[] arr_Param = s_aParams.Split(new char[] { '&', '=' });
                for (int i_Len = 0; i_Len < arr_Param.Length; i_Len++)
                {
                    if ((i_Len + 1) % 2 == 0)
                    {
                        s_Params += "=" + this.objPage.Server.UrlEncode(this.objPage.Server.UrlDecode(arr_Param[i_Len]));  //先對字符進行解碼,再編碼.以防止參數已經編碼的情況
                    }
                    else
                        s_Params += "&" + arr_Param[i_Len];
                }
                return s_Params;
            }
        }

  • 相关阅读:
    乱谈服务器编程
    set global slow_query_log引起的MySQL死锁
    一个由string使用不当产生的问题
    Hbase初体验
    浅谈SQLite——查询处理及优化
    ACID、Data Replication、CAP与BASE
    libevent源码分析
    浅析Linux Native AIO的实现
    vim7.2中文乱码解决方法
    伸展树的点点滴滴
  • 原文地址:https://www.cnblogs.com/freeliver54/p/429662.html
Copyright © 2011-2022 走看看