最近做一個從Access項目向 Asp.net + SqlServer遷移工作,其中遇到了這種情況,在Access窗體的一個按鈕事件中,代碼大體上是這麼個功能:彈出模態對話框,在關閉對話框之後繼續走一段數據庫操作代碼。
在Asp.net裡彈出模態對話框容易,但是在模態對話框關閉之後還要繼續執行服務器代碼,這就要求當對話框關閉之後頁面要立即提交。於是有了以下的解決方法。
在Web Form中拖入服務器端按鈕,並假設此按鈕ID為 btnComput,在隱藏頁面的 Page_Load 中用代碼中這樣寫:
btnComput.Attributes("onclick") = " window.showModalDialog('')",參數為對話框Web Form。
在btnComput的服務器端事件裡執行當對話框關閉之後的數據庫操作代碼。
因為點擊 btnComput時,先執行客戶端javascript,在彈出模態對話框後,頁面也沒提交,一直等到對話框關閉之後,javascript才算執行完畢,然後Web頁面提交,繼續執行服務器端的事件。這樣連同客戶端代碼和服務器端事件代碼一起實現了Access中那個按鈕的功能。
希望能給做類似項目的朋友一些借鑒。