2
運行服務器側方法「M試圖調用服務器側功能在嵌套的jquery對話框從嵌套jquery的對話框
設計是這樣的:
[第一對話]
- 點擊一個按鈕打開第二個對話框
- 點擊另一個按鈕運行服務器端方法。 (工作正常)
- 一個gridview獲取由服務器端方法更新。
[第二對話]
- 點擊按鈕運行服務器側方法 變種btnConfirm =的document.getElementById( 「<%= BtnAvailEmpAccept.ClientID%>」); btnConfirm.click();
[第一個對話框]按預期工作正常,但在[第二個對話框]中沒有任何反應。 [第二個對話框] javascript代碼被執行,但從來沒有命中服務器端的方法。
每個對話框的兩個「div」包含在一個updatepanel中,因爲我有gridview通過按鈕單擊事件進行更新。
這是[第二個對話框]
$confirmWindow = jQuery("#empConfirmDiv");
$confirmWindow.show();
$confirmWindow.dialog("open");
//instantiate the dialog
$confirmWindow.dialog({
dialogClass: "empConfirmDialog",
maxHeight: 600,
width: 1200,
resizable: false,
modal: true,
position: 'center',
autoOpen: false,
title: 'Exception - Confirmation',
overlay: { opacity: 0.5, background: 'black' },
buttons: {
"Decline": function() {
var btnDecline = document.getElementById("<%= BtnAvailEmpReject.ClientID %>");
btnDecline.click();
},
"Left Message": function() {
var btnMsg = document.getElementById("<%= BtnAvailEmpMsg.ClientID %>");
btnMsg.click();
},
"Confirm": function() {
var btnConfirm = document.getElementById("<%= BtnAvailEmpAccept.ClientID %>");
btnConfirm.click();
},
"Cancel": function() {
$(this).dialog("close");
}
}
});
ASP:按鈕來運行服務器端的方法:
<asp:Button ID="BtnAvailEmpAccept" runat="server" Width="10px" Height="10px" OnClientClick="return SetValidateTrue()"
OnClick="BtnAvailEmpAccept_Click" />
沒有人有想法,爲什麼button.Click()不會調用服務器端方法?
>編輯:這是我的答案!
var showDialogConfirmEmp = function() {
$confirmWindow = jQuery("#empConfirmDiv");
$confirmWindow.show();
$confirmWindow.dialog("open");
}
var myWindowConfirmEmp =
jQuery("#empConfirmDiv").dialog({
dialogClass: "empConfirmDialog",
maxHeight: 600,
width: 1200,
resizable: false,
modal: true,
position: 'center',
autoOpen: false,
title: 'Exception - Confirmation',
overlay: { opacity: 0.5, background: 'black' },
buttons: {
"Decline": function() {
var btnDecline = document.getElementById("<%= BtnAvailEmpReject.ClientID %>");
btnDecline.click();
},
"Left Message": function() {
var btnMsg = document.getElementById("<%= BtnAvailEmpMsg.ClientID %>");
btnMsg.click();
},
"Confirm": function() {
var btnConfirm = document.getElementById("<%= BtnAvailEmpAccept.ClientID %>");
btnConfirm.click();
},
"Cancel": function() {
$(this).dialog("close");
}
}
});
var showDialogAvailEmp = function() {
SetValidateTrue();
if (IsScheduleWorkChecked()) {
var button = document.getElementById("<%= btnListEmp.ClientID %>");
button.click();
$myWindowAssign = jQuery("#availEmpDiv");
$myWindowAssign.show();
$myWindowAssign.dialog("open");
$myWindowAssign.parent().appendTo(jQuery("form:first"))
}
else {
alert("Please select a work to assign!");
}
}
var myWindowAvailEmp = jQuery("#availEmpDiv").dialog({ maxHeight: 600,
width: 700,
resizable: false,
modal: true,
position: 'center',
autoOpen: false,
title: 'Exception - Available Employees',
overlay: { opacity: 0.5, background: 'black' },
buttons: [{
text: "Proceed",
"id": "btnProceed",
click: function() {
Page_IsValid = true;
if (Page_IsValid) {
var btnProceed = document.getElementById("<%= btnProceed.ClientID %>");
btnProceed.click();
}
$confirmWindow = jQuery("#empConfirmDiv");
$confirmWindow.show();
$confirmWindow.dialog("open");
myWindowConfirmEmp.parent().appendTo(jQuery("form:first"));
}
},
{
text: "Cancel",
"id": "btnAvailCancel",
click: function() {
$(this).dialog("close");
}
}]
}); // myWindow
// JQuery UI: Diaglog
jQuery(document).ready(function() {
jQuery("#BtnAssign").click(showDialogAvailEmp);
//variable to reference window
myWindowAvailEmp.parent().appendTo(jQuery("form:first"));
...
打開它之前是不是應該配置對話框?在你的代碼中,你首先打開它然後配置。 –
Codrin Eugeniu:無論您先配置對話框還是在打開時進行配置都無關緊要。 – devphil