ASP按钮用参数打开SSRS报告的新窗口

时间:2013-04-25 12:31:33

标签: c# javascript asp.net reporting-services

我正在构建一个使用C#codebehind的简单ASP.NET表单的页面。我需要一个按钮(或某种控件)来打开一个新窗口的链接,我找到了可以使用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));  
}

2 个答案:

答案 0 :(得分:2)

让我们试试这个在新窗口中打开报告。 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>");

答案 1 :(得分:0)

在阅读了一些有类似但不是确切的问题的网站后,我找到了答案。我没有在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)会很有帮助。