原文:JQuery EasyUI彈出對話框解決Asp.net服務器控件沒法執行後臺代碼的方法javascript
jquery-easyui是一個基於jquery的圖形界面插件,利用easyui能夠建立不少好看的網頁界面效果,easyui的相關地址是:http://jquery-easyui.wikidot.com/; easyui的中文文檔地址是:http://www.easyui.net/,本人也利用easeyUI在作一些頁面效果。因爲我很喜歡那種彈出的對話框界面,所以在界面中應用了Dialog類來處理一些確認的信息,但在利用中發現,彈出的對話框,不能再繼續執行asp.net按鈕的後臺響應代碼。界面以下所示。
操做是在按鈕提交後,彈出一個對話框層,用來確認流程的信息,不過奇怪的是裏面本來是asp.net圖片服務器控件卻不能提交了,沒法觸發後臺按鈕,其中頁面的代碼以下所示,注意若是要對話框默認開始不顯示出來,經過設置closed:true,屬性便可。
對應的彈出層內容以下所示:html
</div> java
搜索相關問題發現,其中主要問題是出在:JQuery會把Dialog的元素append到Body裏面,而不是form裏面。研究了頁面源碼後發 現,jQuery UI Dialog控件初始化時動態生成的HTML元素被添加到頁面的尾部、form元素的後面,而原始的Dialog模板部分(其內包含表單元素)也被移到了 動態生成的HTML元素內。也就是說,原先在form內的表單在Dialog初始化後就被移到form外了,這就致使了Dialog模板內表單所有失效。jquery
解決方法是增長一行代碼便可:dlg.parent().appendTo(jQuery("form:first")); 服務器
也就是修改開始部分建立對話框的腳本便可:app
另外你也能夠經過這種方法來處理該問題:asp.net
$('#dialog').dialog('open');
$('#dialog').parent().appendTo($("form:first"))
return false;ide
});post
上述的解決問題詳細能夠參考老外的一篇問題回覆文章:JQuery UI Dialog with Asp .NET button postback..ui