2009-07-06 76 views
0

我正在寫一個asp.net web應用程序。我碰到了一堵磚牆。 基本上我有2頁,主頁面中有一個文本框和一個包含樹視圖的彈出窗口。 我的問題是這樣的。當我選擇一個樹形視圖項目時,我希望程序使用asp.net執行一些數據庫事務,然後將從數據庫中檢索到的值傳遞給JavaScript函數,該函數將數據從彈出頁面傳遞迴父頁面。我的問題是,我無法找到從asp.net調用JavaScript函數的任何方式。我已經嘗試在頁面加載時將屬性分配給控件,但這不起作用,因爲頁面加載數據時尚未從數據庫中檢索。使用asp.net觸發javascript事件

回答

2

看看ClientScriptManager類。您可以從加載HTML頁面時將運行的代碼隱藏中註冊腳本。這些腳本可以調用頁面上的其他JavaScript函數。

Web上有很多教程和示例。這裏有一個我發現可能有幫助,但還有更多。 How to use the client script manager

1

當你說「我已經嘗試在頁面加載時將屬性分配給控件,但這不起作用,因爲頁面加載數據時沒有從數據庫中檢索」。您只需要發現何時從數據庫中提取數據,然後再分配值。沒有看你的代碼,沒有辦法知道確切的事情,但Page_PreRender可能是分配你的值的一個很好的選擇......它可能是在你從數據庫中提取信息之後......這幾乎是你最後的地方可以在爲客戶端生成html之前讓事情發生。

0

這一個有助於使用檢索從值彈出窗口的JavaScript http://www.eggheadcafe.com/articles/20060117.asp

這篇文章演示瞭如何使用javascript觸發回發,並在代碼隱藏中對其進行管理。 http://weblogs.asp.net/mnolton/archive/2003/06/04/8260.aspx

如果將它們放在一起,並使用Control.ClientID來查找您的asp.net控件的實際「html名稱」,您將可以立即設置它。

可能不是在城裏做最漂亮的方式,並且順便讓小寶貝耶穌哭,但無論如何,它的工作原理。

[編輯]哦。我剛剛看到,似乎我以其他方式回答了問題,或者「如何從Javascript觸發代碼隱藏」。我認爲我建議的方法可以幫助你,如果你正確地使用它。

彈出窗口的javascript應該將信息傳遞給父窗口,並且父窗口函數在接收到信息時應該調用回發。

彈出窗口的javascript應該只在回發時被註冊,並且檢索到正確的信息,以便當由於選擇正確的信息而在彈出窗口上發生回發時,窗口關閉並將信息傳遞給父頁面。

觸發回傳的父頁面會完成您需要的事情,並且應用程序會從此處繼續「正常」,根據需要執行您在彈出頁面外的任何操作。

+0

另外:使用隱藏字段來存儲收到的信息有助於在回發期間不丟失它。恕我直言,這是一個很好的方式來做到這一點,「好...它有效」是一種很好的方式。據我所知,ASP.Net使用無償數額的能源......呃隱藏的領域,正確地做回傳。 – 2009-07-06 15:27:19