【问题标题】:How to stop parent gridview event when click on child control click?单击子控件单击时如何停止父gridview事件?
【发布时间】:2013-01-03 06:08:29
【问题描述】:

我在 GridView 中有链接按钮。 GridView 有客户端事件-rowselect。当我单击 LinkBut​​ton 时,会触发客户端事件 (rowselect)。当我单击 LinkBut​​ton 时,我想停止触发 rowselect 客户端事件。

有什么办法吗?

例如。

GridView 有 3 行 2 列

Column 1 ---- Column 2 [LinkButton]
AAAAAA   ---- test.aspx?ID=001
BBBBBB   ---- test.aspx?ID=002
CCCCCC   ---- test.aspx?ID=003

Client Side JavaScript (fired on GridView row selection)
function DisplayData(gridview row)
{
  //get data from selected row.
}

如果选择行的第一列,调用客户端事件,就可以了。但是当点击 LinkBut​​ton 时,重定向到 test.aspx .. 客户端事件没有触发。

【问题讨论】:

    标签: javascript asp.net


    【解决方案1】:

    向您的LinkButton 添加一个单击处理程序,以防止事件冒泡。使用event.stopPropagation()。对于旧版 IE 浏览器,请使用 event.cancelBubble = true:

    <asp:LinkButton runat="server" OnClientClick="cancelClick(event)" ... />
    
    function cancelClick(e) {
        if (e.stopPropagation) e.stopPropagation();
        e.cancelBubble = true;
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用 event.stopPropagation 来停止事件传播。对于不支持e.stopPropagation()的旧版浏览器,您可以使用e.cancelBubble = true

      document.getElementById("<%= yourRadDatePickerID.ClientID %>").onclick = function(e) {
      
          if(e && e.stopPropagation ) 
          {
              e.stopPropagation();
          } 
          else
          {
                e = window.event;
                e.cancelBubble = true;
          }
      }
      

      【讨论】:

      • LinkBut​​ton 是 GridView 单元格内的服务器控件。在 GridView_RowCreated 事件中,生成 LinkBut​​ton 的导航 url(参数)。客户端,从 GridView 行选择中读取一些数据。单击 LinkBut​​ton 时,重定向到其他页面,这很好。但我不希望点击 LinkBut​​ton 时发生客户端事件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2013-11-28
      • 1970-01-01
      • 2016-12-16
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      相关资源
      最近更新 更多