繁体   English   中英

如何取消由ButtonButton按下引起的提交事件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM