ASP.NET GridView“删除时的客户端确认”停止工作即 - 怎么样?

时间:2008-12-04 13:08:52

标签: asp.net gridview

几个月前,我根据这篇msdn文章编写了一个带有自定义“删除”LinkBut​​ton和客户端JavaScript确认的ASP.NET GridView:

http://msdn.microsoft.com/en-us/library/bb428868.aspx(2007年4月发布)

或者例如Javascript before asp:ButtonField click

代码如下所示:

<ItemTemplate>
  <asp:LinkButton ID="deleteLinkButton" runat="server" 
    Text="Delete"
    OnCommand="deleteLinkButtonButton_Command"   
    CommandName='<%# Eval("id") %>'
    OnClientClick='<%# Eval("id", "return confirm(\"Delete Id {0}?\")") %>'
  />
</ItemTemplate>

令人惊讶的是,“取消”不再适用于我的ie(版本:6.0.2900.2180.xpsp_sp2_qfe.080814-1242) - 它总是删除该行。使用Opera(版本9.62),它仍然可以在msdn文章中使用和描述。更令人惊讶的是, 在具有相同ie版本的同事的机器上,它仍然有效(“取消”不会删除该行)。

生成的代码看起来像

<a onclick="return confirm(...);" href="javascript:__doPostBack('...')">

由于confirm(...)在“取消”时返回false,我希望不会触发href中的__doPostBack事件。是否有任何奇怪的设置我不小心可能已经改变了?还有什么可能是造成这种奇怪行为的原因?或者这是“请重新安装WinXP”问题吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

<asp:LinkButton ID="DeleteButton" runat="server" CausesValidation="False"
    CommandName="Delete" Text="Delete"
    OnClientClick="return confirm('Delete Id : '<%# (string)Eval('id')%>')" >

</asp:LinkButton>

答案 1 :(得分:0)

最后在http://forums.asp.net/t/1161858.aspx

找到了解决方案

在该主题中,问题的根源最终被分配给“原因是McAfee Phising Filter”。

我必须更换明显的线

OnClientClick='<%# Eval("id", "return confirm(\"Delete Id {0}?\")") %>'

这个神秘的线(我还必须研究如何逃避花括号),因为“event.returnValue = false;有所作为”:

OnClientClick='<%# Eval("zahlungid", "if(confirm(\"Delete Id {0}?\")==false){{event.returnValue=false;return false;}}else{{return true;}}") %>'