[英]How do I cancel a submit event, caused by the press of a ButtonColumn
我正在使用ASP数据网格,并且有一个ButtonColumn。 当按钮呈现到页面时,它是类型为Submit的输入。 因此,它是一个提交按钮。 该按钮用于删除记录。 但我想使用一些JavaScript来确认用户要删除记录。 我的问题是,即使我从Confirm方法返回false,提交事件仍然会发生...
这是将javascript方法分配给click事件的服务器端代码:
Button deleteButton = e.Item.Cells[6].Controls[0] as Button;
if (deleteButton != null)
{
deleteButton.OnClientClick = "confirmDelete()";
}
这是创建数据网格的ASP.net代码:
<asp:DataGrid
runat="server"
ID="UsersList"
OnItemCommand="UsersList_ItemCommand"
AutoGenerateColumns="false"
HeaderStyle-CssClass="dataTableHeader"
Width="60%">
<Columns>
<asp:HyperLinkColumn DataNavigateUrlField="Username" DataTextField="Username" HeaderText="Username" DataNavigateUrlFormatString="~/Account/EditUser.aspx?user={0}"/>
<asp:BoundColumn DataField="Email" HeaderText="Email" />
<asp:ButtonColumn Text="Delete" HeaderText="Delete" ButtonType="PushButton" CommandName="DeleteUser" CausesValidation="false" />
</Columns>
</asp:DataGrid>
这是确认删除的Javscript代码:
<script>
function confirmDelete() {
var x = confirm("This action cannot be undone. Are you sure you want to delete this user?");
return x;
}
</script>
也许没有办法通过ButtonColumn完成此操作。 我正在考虑更改为TemplateColumn,然后在其中放置一个按钮。 但是随后,我将不得不重新设计在后端处理这些单击事件的代码,该代码当前在ItemCommand处理程序中进行处理。
尝试:
deleteButton.OnClientClick = "return confirmDelete()";
将按钮上的onclick侦听器替换为表单上的onsubmit侦听器,如果您不想提交表单,则返回false,例如:
<form onsubmit="return confirmDelete();" ...>
如果confirmDelete返回false,则取消提交。 如果返回任何其他值,则提交表单。
您需要在form.submit()而不是deletebutton.click()上确认删除,但是您需要通过deletebutton.click()将匿名验证功能分配给form.submit,或者在deletebutton上设置删除标志单击,然后在form.submit()上检查该值。 这样,您想要提交表单的其他按钮仍会提交。 并且不要忘记验证失败后清除变量/或anon函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.