正在取消UpdatePanel中的引导对话框
Dismissing a Bootstrap Dialog within an UpdatePanel
单击下面示例中的"Show"按钮会显示一个简单的引导模式对话框,其中有两个按钮:Cancel(用数据消除来消除)和"OK",这可能会在服务器端做一些工作,然后调用一点Javascript来隐藏对话框。
基本概念运行良好,直到我尝试将整个内容封装在UpdatePanel中,如下所示。我到底做错了什么?(为了获得额外的积分,我将如何尝试通过Javascript建立一个跟踪,它会告诉我我搞砸了什么?)
谢谢!
表单代码:
<%@ Page Language="VB" AutoEventWireup="false"
CodeFile="Default2.aspx.vb" Inherits="Default2" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" />
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css" />
<script type="text/javascript" src="/includes/js/jquery-min.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js">
</script>
</head>
<body>
<form id="form1" runat="server">
<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1"
runat="server" ScriptMode="Debug">
</ajaxToolkit:ToolkitScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div>
<asp:Panel ID="pnlTestPanel" runat="server" role="dialog"
CssClass="modal fade TestDialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close"
data-dismiss="modal"
aria-hidden="true">×
</button>
<h2 class="modal-title">Test Dialog</h2>
</div>
<asp:Panel runat="server" ID="pnlTestBody"
class="modal-body">
<label>This is a test dialog</label>
</asp:Panel>
<asp:Panel runat="server" ID="Panel3"
class="modal-footer">
<asp:Button ID="cmdOK" runat="server"
Text="OK"
CssClass="btn btn-warning">
</asp:Button>
<asp:Button ID="cmdCancel" runat="server"
CssClass="btn btn-default"
Text="Cancel"
data-dismiss="modal">
</asp:Button>
</asp:Panel>
</div>
</div>
</asp:Panel>
<asp:Button runat="server" Text="Show" ID="cmdShow" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
代码隐藏
Partial Class Default2
Inherits System.Web.UI.Page
Protected Sub cmdShow_Click(sender As Object, e As EventArgs) Handles cmdShow.Click
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "pnlTestPanel", _
"$('#" & pnlTestPanel.ClientID & "').modal();", True)
End Sub
Protected Sub cmdOK_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdOK.Click
' Do some server side work
' And now, close the dialog
ScriptManager.RegisterStartupScript(Me.UpdatePanel1, UpdatePanel1.GetType(), _
"Hide Test Dialog", "$('.TestDialog').modal('hide');", True)
End Sub
End Class
只有当您有完整的PostBack时,ScriptManager.RegisterStartupScript
才会工作。在您的情况下,PostBack发生在UpdatePanel
内部。
更新UpdatePanel
时,您将需要使用ASP.NET具有的JavaScript事件。
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args) {
console.log('UpdatePanel start');
}
function EndRequestHandler(sender, args) {
console.log('UpdatePanel end');
}
您需要将代码放在EndRequestHandler
事件中以关闭模态。
有关更多信息,您可以在此处阅读。
即使按钮在更新面板内,脚本管理器仍将在您传递updatepanel&而不是将页面作为其参数。。
只缺少一件事。在Register启动脚本中编写以下语句。
$(document).ready(function () {
$('.TestDialog').modal('hide');
});
我发现最好的方法是创建一个简单的javascript函数。
function closeModal(modalid) {
$('#' + modalid).modal('hide');
}
然后,在页面上的各种Modals中,您可以将Submit/Create按钮的OnClientClick值设置为";closeModal('id_of_your_modal_container')"
然后,我可以使用带有触发器的UpdatePanels,以及我想要在页面上进行的所有常规修剪(Toast通知等),它可以无缝地工作。如果它只是一个标准的按钮或锚标记,那么设置一个数据属性就是你所需要的"数据消除=";模态"
- 正在取消UpdatePanel中的引导对话框
- 是否可以通过Primefaces 3.3的自定义对话框取消Ajax请求
- Bootbox:取消对话框后的回调功能/点击'X'按钮
- 如何在点击链接后从用户取消对话框中获得回调以选择移动应用程序
- 为什么JS confirm()获胜't当我在确认对话框中点击“取消”时,取消提交操作
- 如何在jquery/JavaScript中打开浏览文件对话框时执行取消事件
- 取消“确认表单重新提交”对话框
- 在简单模式中,取消单击时不会调用onClose事件..当我在simple-modal上加载另一个jquery对话框时
- 如何在Javascript中打开一个确定/取消对话框
- JQuQuery UI 对话框取消 AJAX 请求
- 脸书图FB.登录连接对话框,取消事件
- 动态覆盖jqueryUI对话框按钮(保存,取消等到用户选择)文本
- 道场迪吉特.对话框取消显示
- 支持使用转义取消 DHTML 对话框
- 检查用户是否使用FB.ui在共享对话框中向Facebook发布(或取消)共享
- 如何在弹出确认对话框之前取消
- "在文件对话框中取消“;事件
- 在jQuery 1.4.2中添加一个简单的确认/取消对话框
- Facebook分享对话框取消按钮没有关闭窗口
- jQuery模态对话框取消按钮不工作