OnClientClick="return confirm('您确定要删除吗?');"

16

我正在使用这段代码来进行删除确认。当我点击链接按钮时,它会要求我进行确认,但是第一次我点击“确定”,记录没有被删除(仅限于第一次)。

之后,该记录就能成功地被删除了。

<asp:LinkButton ID="LinkBtnDelete" runat="server" 
OnClientClick="return confirm('Are you sure you want delete');" 
CommandName="Delete">Delete 
</asp:LinkButton> 

如果可以帮忙,感激不尽。


你能澄清一下这个说法吗?你是说只有在第二次点击“确定”时才能正常工作,而第一次点击时不能正常工作吗? - Rippo
1
页面是否进行了回传,但记录并未被删除?这可能是视图状态问题。 - Kobi
你一定在使用 UpdatePanel 吧? - Syed Umar Ahmed
你调试并验证了删除命令是否被触发了吗? - Nielsvh
2个回答

30
如果上述答案对您不起作用,请尝试以下代码:

如果上述答案对您不起作用,请尝试以下代码:

<asp:LinkButton ID="LinkBtnDelete" runat="server" 
OnClientClick="if (!confirm('Are you sure you want delete?')) return false;" 
CommandName="Delete">Delete 
</asp:LinkButton>

1
有没有人能解释一下为什么这个代码能够运行而一个简单的 return confirm('Delete Record?'); 却不能? - SBF
@SBF:因为ASP.NET只是将OnClientClick代码“复制并粘贴”到自己的方法中间。因此,A; return confirm(...); B; 永远不会执行B(其中包含调用服务器端方法所需的代码)。然而,A; if (!confirm(...)) return; B;则会执行。请注意,您自定义代码的返回值是无关紧要的,是一个红色的干扰物。 - Heinzi

3
<asp:LinkButton ID="LinkBtnDelete" runat="server" 
OnClientClick="return confirm('Are you sure you want delete');" 
CommandName="Delete" CommandArgument="">Delete 
</asp:LinkButton>

你必须添加 CommandArgument 参数,这样它才能一次性正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接