我正在尝试做一些具体的事情。我的想法是当用户更改下拉列表的值时,尝试使用JQuery弹出模式对话框。然后,用户应选择“继续”或“取消”。我希望该选择的结果确定我是否运行ASP.NET回发事件。现在弹出模态对话框,但随后ASP.NET页面执行AutoPostBack
并消除模态框后立即消失。
解决我的dillema的好/优雅方法是什么?有没有办法让ASP.NET等待结果,或者我是否需要某种隐藏按钮来处理以后启动回发?
感谢您的帮助!
<asp:Content ID="MainContent" ContentPlaceHolderID="Content" runat="Server">
<asp:ScriptManagerProxy ID="smpProxy" runat="server">
<Scripts>
<asp:ScriptReference Path="~/JQuery/jquery-1.7.1.min.js" />
<asp:ScriptReference Path="~/JQuery/jquery-ui-1.8.18.custom.min.js" />
</Scripts>
</asp:ScriptManagerProxy>
<asp:UpdatePanel ID="updPanel" runat="server">
<ContentTemplate>
<script type="text/javascript">
function CheckConfirmation() {
$('#divConfirmChange').dialog("open");
return false;
}
function pageLoad() {
$("#divConfirmChange").dialog({
autoOpen: false,
resizable: false,
height: 158,
modal: true
});
}
</script>
然后这是我的下拉列表进一步向下
<asp:DropDownList ID="ddlApprovalStatus" onChange="javascript:CheckConfirmation();" runat="server" AutoPostBack="true" onSelectedIndexChanged="ddlProgram_SelectedIndexChanged">
答案 0 :(得分:0)
设置为autopostback的下拉列表可能很难处理,尤其是当它位于更新面板内时。您需要覆盖页面请求管理器的回发。下面的示例使用默认的javaScript确认,但如果您不喜欢标准浏览器确认,我会推荐jQuery Alert Dialogs plugin,因为常规jQuery对话框不会在没有额外挂钩的情况下停止回发。
<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(initializeRequest);
function initializeRequest(sender, args) {
var el = args.get_postBackElement().id;
if (el == '<%=ddlApprovalStatus.ClientID %>') {
if (!confirm('Are you sure?')) {
args.set_cancel(true);
}
}
}
</script>