我在GridView中添加了一个LinkButton,在JavaScript中利用LinkButtonID.parentNode.parentNode.rowIndex
可以获取到当前行的值,可是有的时候第一行的行号是从1开始,有的时候是从2开始,搞不懂为什么?
有人知道是为什么吗?或者告诉我其他的用JavaScript如何取得gridview的当前行号的方法好吗?谢谢

解决方案 »

  1.   

    Mark!
    我一般是将gridview里需要被Javascript操作的对象在page render的时候就注册到Javascript 里去
      

  2.   

    不会吧.
    楼主可以在后台取:
    GridView.Row.RowIndex是int 型的.从0开始计数.
      

  3.   

    绑定时把行号信息保存到LinkButton的一个属性上js 取LinkButton中此属性的值
      

  4.   


    LinkButton的一个属性上 ? 哪个属性? 能具体说明一下么?
      

  5.   

    属性的名称可以自己定啊
    比如一个GridView中 CheckBox  
    你可以改成LinkButton    protected void GridViewData_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.FindControl("CheckBoxID") != null)
            {
                CheckBox checkBoxID = (CheckBox)e.Row.FindControl("CheckBoxID");
                checkBoxID.Attributes.Add("ObjectID", ((DataRowView)container.DataItem)["ID"].ToString()); //"ID" 对应数据源的主键
            }
        }
    js取时
      var GridView2 = document.getElementById("<%=GridView1.ClientID %>");
              for(i = 1;i < GridView2.rows.length; i++)
              {
                var objCheckBox = GridView2.rows[i].cells[0].firstChild;
                if(objCheckBox.checked != null)
                {
                  if(objCheckBox.checked==true)
                  {           
                    var nowSelectID = objCheckBox.getAttribute("ObjectID");
                   alert(nowSelectID);
                  }
                }
              }
      

  6.   

    上面丢了一句:
     GridViewRow container = (GridViewRow)checkBoxID.NamingContainer;
      

  7.   


    是我点击第1行时,alert一下行号,发现弹出2。
    而数据量少的时候,点击第1行可以正确地弹出1。
    所以发现了原因,就是有件数多有分页的时候就会是2,否则就是1。谢谢大家,马上结贴。