DoPostback刷新页面,但不捕获事件处理程序
-
21-12-2019 - |
题
首先,我应该提到,我花了一整天的时间搜索,无法弄清楚我的代码有什么问题以及为什么它不起作用。..
我需要一个模态对话框在我的代码中进行确认,所以我使用这个jQuery模态对话框 : JQuery确认
我需要的是嵌入这个功能与一个 <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时,它刷新页面,但没有在代码隐藏中出现我的按钮事件,我尝试了几种方法来调用button 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" />
这两个问题该怎么办?
我搜索了很多,没有解决方案为我工作!!!
我会很感激任何解决方案,谢谢。
解决方案
不知道你的asp:button的声明,这里是我最好的猜测。
您需要使用按钮的uniqueID,按钮的"名称"属性,而不是它的ID。
__doPostBack('<%=complexConfirm.UniqueID%>', '');
此外,由于它是一个按钮,您实际上不需要指定OnClick
编辑:我创建了一个工作示例,演示了我认为您正在尝试完成的任务。您可以根据需要将其定制为您的jQuery confirm。
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。您仍然可以使用jquery与asp.net 生成的Id。然后我确定事件被命名 btnTest1_Click
因为按钮的名称是 btnTest1
我不确定为什么你需要另一个按钮,因为看起来你想要做的只是在按钮提交之前确认。