Wednesday, April 18, 2007 - 文章

TIPS-Call Javascript function after UpdatePanel postback

我希望UpdatePanel中的Button在觸發非同步的Postback後,除了更新Update Panel中Label的值,還可以觸發一段Javascript,呼叫前端的Javascript Function。試了幾種方法都失敗了!

1) Response.Write想當然不Work,因為ASPX網頁並沒有重新Render。
2) 加了一個Literal在UpdatePanel中,設定Literal1.Text="<script>blah();</script>"。用Fiddler看到這段內容被傳回來了,但我猜UpdatePanel是用置換InnerHTML的方式動態更新UpdatePanel的內容,所以其中的Javascript並沒有被執行。
3) Google了一下,有些人建議用Page.RegisterStartupScript來做。我有點懷疑它的原理,不過既然有人說Work,我就試試。最後證實這招也不管用,或許Atlas到ASP.NET AJAX間做了什麼大改。

最後,找到一篇文件,作者跟我一樣搞不出RegisterStartupScript的把戲,所以改用
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(blah);
的方式,加掛endRequest事件以呼叫自訂的Javascript Function。Ya, it works!

只是此招每次非同步呼叫後都會被觸發,要用一些技巧去區別後端處理邏輯為何並依執行結果做不同的處理。(最簡單的方法是將資料放在TextBox中,前端用$get("txtName").value就可輕鬆取回)

搜尋

Go

<April 2007>
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345
 
RSS
【工商服務】
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


BlogLook Score and Rank

Syndication