当使用javascript删除行时,第一次只删除正确的行

When Delete the row using javascript then, first time only deleting correct row

本文关键字:删除 第一次 javascript 删除行      更新时间:2023-09-26

对于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绑定之前,行被删除,所以,它的变化。

请您指导一下如何解决这个问题。

为什么不动态地获取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);
 }