Modal PopUp中的OK按钮的事件处理程序未执行

时间:2012-10-04 18:39:06

标签: c# asp.net ajaxcontroltoolkit modalpopupextender

问题在于,我在用户控件中有一个Modal PopUp Extender,它是从一个页面内的另一个用户控件调用,在一个母版页内。页面以动态方式加载第一个用户控件,当我想显示模态对话框时,它会将用户控件加载到占位符中,并在模态弹出用户控件加载时调用模态的show方法。

在模态中我有一些TextBoxes和一个Button来将一些数据保存到数据库中。

问题是Buton onClick事件根本不会触发。我尝试在模态控件的Onload事件中添加一个断点,但奇怪的是,如果我在父用户控件的Onthe load事件中放置另一个断点(持有Modal PopUp的那个),它就不会进入断点在父用户控件的OnLoad事件中正确停止。我需要使用事件处理程序,因为我调用存储过程将数据保存到数据库中。

请注意,我不想只关闭modalpopup窗口,我想验证一些文本框然后将一些数据保存到数据库中,这就是为什么我必须使用按钮的事件处理程序。

请求您的支持

3 个答案:

答案 0 :(得分:0)

这是我在app中使用的一个函数,我需要一个模态对话框。这些按钮实际上是由Jquery代码生成的,因此可以保证它们被触发事件:

  $(function () {
           $(".addNew").dialog({
               autoOpen: false,
               width: 300,
               height: 300,
               modal: true,
               close: function (event, ui) {
           },
           buttons:
                   {
                       "Exclude Week": function () {

                           var cReason = $('#<%= ddlReasonCode.ClientID %> option:selected').text();
                           var Week = $('#<%= lblWeekChange.ClientID %>').text();

                           $.ajax(
                                   {
                                       type: "POST",
                                       url: "Ajax/ExcludeWeek.aspx",
                                       data: "week=" + Week + "&reasonCode=" + cReason,
                                       success: function (msg) {
                                           $('#resultDiv').text('Added to List');

                                       },
                                       error: function (x, e) {
                                           alert("The call to the server side failed. " + x.responseText);
                                       }
                                   }
                               );
                                   $(this).dialog("close");
                       },
                       "Cancel": function () {
                           $(this).dialog("close");
                       }
                   }
       });


   });

//这是用于触发对话框的代码:

$(".addNew").dialog("open");

答案 1 :(得分:0)

对于给定的场景,它可能已经晚了,但在我的项目上升级AjaxControlToolikit版本后,我遇到了同样的问题。

问题是ModalPopupExtender属性OkControlID:在较新版本的工具包服务器端单击按钮的处理程序将不会执行,它将运行,而不是OnOkScript客户端代码。

为了恢复旧的行为,在我的情况下,我不得不从模态弹出扩展器声明标记中删除OkControlID属性。

希望它有所帮助。

答案 2 :(得分:0)

不知何故,将我的整个模式弹出框放在<asp:UpdatePanel>之外,我已经为我解决了这个问题。我会说我对更新面板不是很熟悉,但是它有效!