我正在构建一个使用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));
}
答案 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)会很有帮助。