原本在 UpdatePanel 中的 CheckBoxList (AutoPostBack=True),
在多按幾次(次數不定)之後會失效(checkbox點了沒反應),
為何會這樣子呢?
環境 : Windows 2012, .NET 4.0
最近同事詢問在將程式部署到Windows 2012後,原本在 UpdatePanel 中的 CheckBoxList (AutoPostBack=True),
在多按幾次(次數不定)之後會失效(checkbox點了沒反應),當失效後,需要重開ie才會正常。
錄IE的developer tool網路截取,會發現失效時網頁狀態為pending。以下為 HttpWatch 錄下來的圖,
剛開始發現,如果將該網站加入到 「相容性檢視」 的網站之中,就不會有這個問題!
如果要設定相容性,可參考「隨手小筆記」。
但感覺應該是因為前個Ajax Post還沒結束,後者就要再Post,所以就搞不出來,逾沖逾多。
所以就再加入以下的JavaScript,當前面的 Ajax Post 還沒結束,後面如果要再沖進去,就不給沖,如下,
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(initializeRequest);
function initializeRequest(sender, args) {
if (prm.get_isInAsyncPostBack()) {
args.set_cancel(true);
}
}
經過測試,這樣就不會發生一直沖,而造成失效的問題了。
參考資訊
Working with Partial-Page Rendering Events
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^