DoPostback刷新页面但不捕获事件处理程序

时间:2014-07-30 15:53:58

标签: jquery asp.net modal-dialog dopostback

首先,我应该提一下,我花了一整天的时间进行搜索,无法弄清楚我的代码是什么问题,以及为什么它不起作用......

我需要一个模态对话框来确认我的代码,所以我使用这个jQuery模式对话框:JQuery Confirm

我需要的是使用<asp:Button> ...

嵌入此功能

我的问题是,当我点击按钮弹出对话框但是是/否按钮不起作用时,两者都会消失对话框。

我也使用下面的代码,但__doPostBack()根本没有做任何事情,但它完全运行简单的js代码,例如alert(''):

$("#complexConfirm").confirm({
     title: "Redirect confirmation",
     text: "This is very dangerous, you shouldn't do it! Are you really really sure?",
     confirm: function (button) {
         __doPostBack('complexConfirm', 'OnClick');
     },
     cancel: function (button) {
         return false;
     },
     confirmButton: "Yes",
     cancelButton: "No"
});

我搜索和对话框因为元素来自表单元素之外所以我应该把它带回到表单但我不知道我如何尝试下面的代码并且它不会

$("#editEventModal").parent().appendTo(jQuery("form:first"));

另一个问题是我尝试使用javascript事件回发而没有对话框,我使用2按钮一个用于调用javascript而另一个用于调用它,但是当我使用__doPostBack时它刷新页面但是没有来到我的按钮事件在代码隐藏中,我尝试了几种方法来调用按钮onClick事件,但它只是刷新页面而不会调用我的butoon OnClick Mehtod !!!

按钮声明如下:

<asp:Button ID="complexConfirm" ClientIDMode="Static" runat="server" OnClick="TestBTN_Click" Text="Test" />
<asp:Button ID="checkit" ClientIDMode="Static" runat="server" OnClientClick="__doPostBack('<%=complexConfirm.UniqueID%>', '');" Text="CHECK" />

我应该为这两个问题做些什么?

我搜索了很多,而且没有解决方案对我有用!!!

我将感激任何解决方案,谢谢。

1 个答案:

答案 0 :(得分:1)

不知道你的asp:按钮的声明,这是我最好的猜测。

您需要使用按钮的唯一ID,按钮的“名称”属性,而不是它的ID。

__doPostBack('<%=complexConfirm.UniqueID%>', '');

此外,由于它是一个按钮,因此您实际上不需要指定OnClick

编辑:我创建了一个工作示例,演示了我认为您要完成的任务。你可以根据需要定制这个jQuery确认。

ASPX:

<asp:Button ID="btnTest1" runat="server" Text="Test1" OnClick="btnTest1_Click" />

的javascript:

<script>
    $('#<%=btnTest1.ClientID%>').confirm({
        text: "This is very dangerous, you shouldn't do it! Are you really really sure?",
        title: "Confirmation required",
        confirm: function (button) {
            // do something
            __doPostBack('<%= btnTest1.UniqueID%>', '');
        },
        cancel: function (button) {
            // do something
        },
        confirmButton: "Yes I am",
        cancelButton: "No",
        post: true
    });
</script>
代码背后的代码:

protected void btnTest1_Click(object sender, EventArgs e)
{
    Response.Write("You clicked YES");
}

我认为问题的一部分是你的事件名称没有以你的按钮名称命名。如果使用我认为你的autoEventWireup,那么你的事件就不会触发,因为它找不到具有匹配名称的事件。

所以,我做的第一件事是消除StaticClientID。你仍然可以在asp.net生成的ID中使用jquery。然后我确保该事件的名称为btnTest1_Click,因为该按钮的名称为btnTest1

我不确定你为什么需要另一个按钮,因为看起来你要做的就是在按钮提交之前确认。