2012-03-20 61 views
0

我正在尝试做一些具体的事情。我的想法是当用户更改下拉列表的值时,尝试使用JQuery弹出一个模式对话框。用户应该选择'继续'或'取消'。我想要那个选择的结果来确定我是否运行ASP.NET回发事件。现在,模式对话框弹出,但随后ASP.NET页面执行AutoPostBack并立即消失,并清除模式框。同时使用JQuery和ASP.NET OnSelectedIndexChanged事件处理程序的时机

什么是一个好/优雅的方式来解决我的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

下拉列表。您需要覆盖页面请求管理器的回发。下面的示例使用默认的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> 
+0

我从来没有这样做过。它看起来很有希望,但我一直收到一个Sys.WebForms.PageRequestManager为空的错误。 (事实上​​,我的Sys对象在我调试时不包含名为WebForms的属性)我正在进一步研究尝试解决问题,任何提示都会感激。感谢您的答复! – aokelly 2012-03-20 21:44:52

+0

请尝试将其放在页面底部以解决您的错误。 – Justin 2012-03-21 06:08:12