【问题标题】:ASP.NET GridView "Client-Side Confirmation when Deleting" stopped working on ie - how come?ASP.NET GridView“删除时客户端确认”停止工作 ie - 怎么回事?
【发布时间】:2008-12-04 13:08:52
【问题描述】:

几个月前,我根据这篇 msdn 文章编写了一个带有自定义“删除”链接按钮和客户端 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 事件。是否有任何奇怪的 ie 设置我不小心改变了?还有什么可能是导致这种奇怪行为的原因?或者这是“请重新安装 WinXP”的问题?

【问题讨论】:

    标签: asp.net gridview


    【解决方案1】:

    试试这个:

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

    【讨论】:

      【解决方案2】:

      终于在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;}}") %>'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-04
        • 2021-12-19
        • 1970-01-01
        • 1970-01-01
        • 2016-08-14
        相关资源
        最近更新 更多