2012-02-10 90 views
5

我有一个负责填充SSRS报告的函数。用户按下一个按钮,我出去查看是否有数据。如果没有数据,我提供一个NO DATA消息。如果有数据,我会拨打我想在新窗口中打开的SSRS报告。我认为使用JavaScript函数将是实现这一目标的最佳方式。这是如何完成的,或者你会推荐什么?提前致谢!ASP.Net从代码隐藏的VB调用JavaScript函数

<script type="text/javascript"> 
     function openWindow(url) { 
      document.forms[0].target = "_blank"; 
     } 
    </script> 

回答

5

请考虑使用ClientScriptManager.RegisterClientScriptBlock方法。这是一种静态方法,应该可以在您的页面上显示。用法

实施方式是以下几点:

Page.ClientScript.RegisterStartupScript(Me.GetType(), "window-script", "openWindow('someUrl')", True) 

当然,你可以把你在后面的代码已经准备好任何网址...

希望它能帮助。

0

如果你正在尝试根据服务器端逻辑的一些结果的网页上执行JavaScript中,你可以做到这一点的一种方式是通过使用ASP文本控件(或其他类型的asp控件)

例子:

<asp:Literal ID="literalJavascript" runat="server"> 
    function openWindow() { ... } 

    openWindow(); 
</asp:Literal> 

然后只是基于您的其他逻辑在您的服务器代码中显示或隐藏此文字。

9

试试这个:

System.Web.UI.ScriptManager.RegisterClientScriptBlock(Page, GetType(Page), "Script", "openWindow(url);", True) 
2

东西要记住在这里:当您的VB代码运行时,在浏览器的页面不存在。

记住网页通过HTTP协议的工作原理,以及http协议归结为请求反应。总是先请求,然后是响应。通常情况下,响应是html,这是vb代码的来源。所有代码和aspx标记的唯一目的是让您的web服务器可以将html发送回浏览器。浏览器和服务器之间没有活动连接。当您的vb代码正在运行时,浏览器中的网页并不存在(您的代码正忙于创建它)。虽然你的javascript正在运行,并且用于在服务器上创建它的vb资源早已被回收。