在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    }
發佈了20 篇原創文章 · 獲贊 8 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章