2010-01-27 117 views
0

我在asp.net頁面中有一組手風琴div(由原型庫提供支持)。我想保存一個手風琴的狀態,所以當回發事件發生時,同一個div被打開,而不是完全重新加載頁面並打開默認的div。從vb.net觸發javascript單擊事件

我的計劃是使用div的toggler click事件函數設置帶有打開div的ID的頁面控制值,然後在回發調用同一div後觸發單擊事件(使用持有div的控件的值ID)作爲目標。但我不確定如何從vb.net觸發一個JavaScript單擊事件,但這肯定似乎是一個蹩腳的解決方法。

1)你能告訴我如何從vb.net代碼隱藏頁面 - 或 - 2)是否有一個更優雅的方式來做到這一點?

感謝

回答

0

由於後面的代碼是服務器端,JavaScript是客戶端,就沒有辦法來執行這個混雜。我認爲最好的方法是在頁面上控制頁面,這個頁面用於維護JavaScript中的狀態,以保證回發(例如asp:HiddenField)。然後,您可以將「打開」div的標識設置到該隱藏字段中,並且在回發時它的值將在視圖狀態中存活。

然後,你只需要添加一個小函數來調用onload進入hiddenfield,抓住id並設置合適的面板。考慮到所有這些,我建議您調查MultiView控件的用法。這正是這個控件創建來處理的。

0

您可以使用cookie。當手風琴狀態改變時,重新寫入cookie。加載頁面時,加載cookie中的數據並運行一個函數來重置手風琴狀態。

這可能比搞亂視圖狀態容易得多。

1

胡里奧,試試這個:

ScriptManager.RegisterStartupScript(Me, Me.GetType(), "runFunction", "runFunction();" True) 

這將運行名爲 「runFunction」 一個JS的功能。我認爲你關於將開放div的ID存儲在隱藏字段或頁面上的東西是一個好主意。我認爲將它存儲在cookie中是不必要的,除非您希望在用戶離開頁面後手風琴的狀態持續存在。否則,每次請求擁有該cookie的用戶,您都會通過電話雙向強制傳輸更多數據。

另一個想法 你可能(也可能應該)利用AJAX。這將意味着對服務器的一個非常輕量級的調用,並且手風琴不會自行重置,因爲頁面的這一部分不會刷新。