【问题标题】:When Delete the row using javascript then, first time only deleting correct row当使用javascript删除行时,第一次只删除正确的行
【发布时间】:2015-10-26 07:28:04
【问题描述】:

对于gridview,rowdatabound事件,我写了如下代码:

Private Sub gv_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gv.RowDataBound
    If (e.Row.RowType = DataControlRowType.DataRow) Then
        e.Row.Cells(0).Text = "<a href='javascript:fnDelete(" &  e.Row.RowIndex & ");' style='text-decoration:none;'><img src='Images/DEL.gif'   height='10' width='10' border='0'></img></a>"

现在在 JavaScript 中使用 fnDelete 函数如下:

 function fnDelete(rowindex)
 {
  ....
    var gridViewctl = document.getElementById('<%= gv.ClientID %>');
    gridViewctl.deleteRow(rowindex+1);
 }

问题:第一次,它删除正确的行,之后每次,它删除一些不同的行,而不是删除点击的行。看起来,原因是因为 rowindex 是之前绑定的,而 row 被删除了所以,它的变化。

请您指导如何解决此问题。

【问题讨论】:

  • 为什么你从 RowDataBound 调用 Javascript 方法?它会在页面呈现之前自动迭代每一行。
  • 是的。它会迭代。

标签: javascript asp.net vb.net gridview


【解决方案1】:

为什么不动态获取rowIndex,而不是使用事件中的元素传递它并找到父TR。

e.Row.Cells(0).Text = "<a href='#' onclick='fnDelete(this);' style='text-decoration:none;'><img src='Images/DEL.gif'   height='10' width='10' border='0'></img></a>"

 function fnDelete(el) {
     var gridViewctl = document.getElementById('<%= gv.ClientID %>');
     // anchor is el, td is the first parentElement, tr is the next parentElement
     var rowIndex = el.parentElement.parentElement.rowIndex;
     gridViewctl.deleteRow(rowIndex);
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 2014-12-14
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多