簡體   English   中英

ASP按鈕用參數打開SSRS報告的新窗口

[英]ASP button to open new window to SSRS report with parameter

我正在構建一個頁面,它是一個簡單的ASP.NET表單,帶有C#codebehind。 我需要一個按鈕(或某種控件)來打開一個新窗口的鏈接,我找到了可以使用Javascript執行該操作的代碼,我找到了可用於使我的按鈕打開我的SSRS報告的代碼從我的aspx頁面動態傳遞的參數。 我還沒有找到任何可以處理的事情。

我的asp表單以一個簡單的文本框開頭,查找NPI(ID類型)。 該NPI用於搜索數據庫和填充表單。 我還希望在頁面上有一個按鈕,用於獲取用戶輸入的NPI,並將其傳遞給打開我的SSRS報告的新窗口。

我研究了這個,我知道我可以使用Javascript打開一個新窗口,這將是很好的,但我不知道如何將用戶輸入NPI包含在JS版本中。 我知道我不能使用codebehind打開一個新窗口,但我可以使用Response.Redirect將NPI發送到SSRS報告的URL。 我找不到兩者的結合。

先感謝您。 這是我第一次在StackOverflow上發布,盡管它每天都會使用它來獲取答案。 我為我正在制造的任何搞砸道歉。

TextBox:

<asp:TextBox ID="NPI" runat="server" Width="144px"></asp:TextBox>

目前打開我的SSRS報告的按鈕:

<asp:Button ID="reports" runat="server" Text="View Reports" 
    onclick="reports_Click" />

這是按鈕的代碼隱藏:

protected void reports_Click(object sender, EventArgs e)  
{  
    Response.Redirect("http://myReportServer/Pages/ReportViewer.aspx?%2fDRPreports%2fApplicantOverview&rs:Command=Render&npi=" + HttpUtility.UrlEncode(NPI.Text));  
}

我們試試這個在新窗口中打開報告。 ASPX:

<asp:TextBox ID="txt" runat="server"></asp:TextBox>
<asp:Button  ID="take" runat="server" onclick="take_Click" Text="no"/>

ASPX.cs代碼背后:

Response.Write("<script>window.open('../About.aspx?qs=" + txt.Text + "','_blank');</script>");

在閱讀了許多類似但不是確切的問題的網站后,我能夠找到答案。 我沒有在StackOverflow上看到答案,所以我沒有刪除我的問題,而是認為我會提供一個解決方案,以防它可能有所幫助。

解決方案非常簡單。 正如原帖中所提到的,對於新窗口,不能使用代碼隱藏。 只有在用戶離開頁面時才可以使用它。 對於新窗口,將按鈕代碼更改為:

<asp:Button ID="reports" runat="server" Text="View Reports" 
    onclientclick="Navigate()" />

onclientclick現在引用打開新窗口所需的JS。 那個腳本是:

<script type="text/javascript">
    function Navigate() {
        var w = document.getElementById('NPI').value
        window.open('http://MyReportServer/Pages/ReportViewer.aspx?%2fDRPreports%2fApplicantOverview&rs:Command=Render&npi=' + w);
    }
</script>

如您所見,它只不過是創建變量(w)並為其分配NPI文本框的值。 然后,在window.open中,將變量W粘貼到最后,如圖所示。

現在它將打開SSRS報告,並在加載時分配NPI參數。 如果這太簡單了,我可以刪除整個帖子。 否則,我希望其他人發現在一個帖子中同時擁有兩個選項(response.redirect和JS open.window)會很有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM