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就可輕鬆取回)