如何解决防止ModalPopupExtender在回发期间/之后关闭
| 如何防止我的asp:ModalPopupExtender在回发到服务器之后或期间关闭? 这是我的代码: JAVASCRIPT// Confirm popup Ok button
function OnOk() {
$(\'#confirmPopup\').hide();
ClickSaveButton(); // does a postback
ShowGridPopup();
}
ASP.NET AJAX
<asp:ModalPopupExtender BehaviorID=\"confirmPopup\" ID=\"confirmPopup\" runat=\"server\"
TargetControlID=\"butConfirm\" PopupControlID=\"ConfirmView\" BackgroundCssClass=\"modalBackground\"
OnOkScript=\"OnOk();\" OnCancelScript=\"OnCancel();\"
OkControlID=\"yesButton\" CancelControlID=\"noButton\">
</asp:ModalPopupExtender>
无论我在回发方法ClickSaveButton()
之前还是之后调用ShowGridPopup()
,弹出窗口仍然消失。我该如何预防?
编辑
这是ShowGridPopup()
和ClickSaveButton()
的代码
function ShowGridPopup() {
if (getID() == \"Popup1\") {
ShowGridPopup1();
} else if (getID() == \"Popup2\") {
ShowGridPopup2();
}
}
function ClickSaveButton() {
var _id = $(\'a[id$=\"butSave\"]\').attr(\"ID\");
__doPostBack(_id.replace(\"_\",\"$\"),\'\');
}
解决方法
您应该使用ѭ7,这样回发后ModalPopupExtender不会被隐藏。请参见下面的示例:
Aspx:
<body>
<form id=\"form1\" runat=\"server\">
<asp:ScriptManager ID=\"ScriptManager1\" runat=\"server\">
</asp:ScriptManager>
<div>
<asp:UpdatePanel ID=\"udpOutterUpdatePanel\" runat=\"server\">
<ContentTemplate>
<asp:Button ID=\"ButtonShow\" runat=\"server\" Text=\"Show Popup\" OnClick=\"ButtonShow_Click\" />
<input id=\"dummy\" type=\"button\" style=\"display: none\" runat=\"server\" />
<ajaxToolkit:ModalPopupExtender runat=\"server\"
ID=\"mpeThePopup\"
TargetControlID=\"dummy\"
PopupControlID=\"pnlModalPopUpPanel\"
BackgroundCssClass=\"modalBackground\"
DropShadow=\"true\"/>
<asp:Panel ID=\"pnlModalPopUpPanel\" runat=\"server\" CssClass=\"modalPopup\">
<asp:UpdatePanel ID=\"udpInnerUpdatePanel\" runat=\"Server\" UpdateMode=\"Conditional\">
<ContentTemplate>
Message
<asp:Button ID=\"ButtonClose\" runat=\"server\" Text=\"Close Popup\" OnClick=\"ButtonClose_Click\" />
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
后面的代码:
protected void ButtonShow_Click(object sender,EventArgs e)
{
//Show ModalPopup
mpeThePopup.Show();
}
protected void ButtonClose_Click(object sender,EventArgs e)
{
//Hide ModalPopup
mpeThePopup.Hide();
}
, 我找到了一种解决方法,这是我的解决方案:您必须在ASP中的服务器端创建一个新的HiddenField
控制器,该控制器将用于存储要在回发后显示的ModalPopupExtender
的ID,它如果没有要显示的弹出窗口,则设置为null。
<!-- Grid Popup ID: to obtain the grid popup ID from server-side -->
<asp:HiddenField id=\"gridPopupID\" runat=\"server\" value=\"\" />
接下来,我们需要在使用save事件之前将ID设置为ѭ10
// Confirm popup Ok button
function OnOk() {
$(\'#confirmPopup\').hide(); // hides the current confirmation popup
$(\"#<%= gridPopupID.ClientID %>\").val(getID()); // set the ID to the hiddenField.
ClickSaveButton(); // simulates the click of the save button
}
现在,在后面的代码中,我们所需要做的就是检查HiddenField
文本字段的值,我们只需在正确的弹出窗口上相应地执行.Show()
即可。
Protected Sub OnSaveAssociation(ByVal sender As Object,ByVal e As EventArgs) Handles butSaveAssociation.Click
\' ommited code: save changes to back end
\' determine which popup to show
Dim _id As String = gridPopupID.Value
Select Case _id
Case \"Popup1\"
gridPopup1.Show()
gridPopupID.Value = Nothing
Case \"Popup2\"
gridPopup2.Show()
gridPopupID.Value = Nothing
End Select
End Sub
, 与更新面板一起使用ModalPopupExtender1.Show()可以避免刷新整个页面。这对我来说非常有效。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。