2012-02-10 102 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資源早已被回收。

相關問題