在GridView添加了一个模板列,里面放一个Button,当点击这个Button时如何得到当前行的RowIndex?

解决方案 »

  1.   

    e.Row.RowType == DataControlRowType.DataRow
      

  2.   

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
     if (e.Row.RowType == DataControlRowType.DataRow)
     {
         LinkButton l = (LinkButton)e.Row.FindControl("delete");
         l.Attributes.Add("onclick", "return confirm('删除与否??');");
     }
    }
     protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
          int categoryID = (int)GridView1.DataKeys[e.RowIndex].Value;
          DeleteRecordByID(categoryID);
        }
      

  3.   

    不是的,我是在模板编辑状态直接双击这个按钮控件来生成ButtonClick事件的,
    protected void btnDelete_Click(object sender, EventArgs e)
    {}
    这个e是EventArgs的,根本点不出个Row来,
    或者不通过这种方法来写事件也行,我是想点击按钮删除当前行的记录,可是现在取不到当前行的行号,各位谢谢了
      

  4.   

    。。你是不是刚学c#啊?girdview是有许多事件需要你从新写的。我给你的代码是最好的实现方式。不是我没理解你的问题。也不是我没说对答案。是你没搞清楚girdview这个控件
      

  5.   

    <asp:GridView ID="GridView1" DataKeyNames="TheUserNO" runat="server" AutoGenerateColumns="False" BackColor="White"  OnRowDataBound="GridView1_RowDataBound"
               OnRowDeleting="GridView1_RowDeleting"
      

  6.   

    <asp:LinkButton ID="delete" runat="server" CausesValidation="False" CommandArgument='<%# Eval("TheUserNO") %>' CommandName="Delete"></asp:LinkButton>  </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
      

  7.   

    1.RowDataBound,把行号邦定到按钮的属性上:btn.Attributes["Test"] = (e.Row.RowIndex)
    2.gridview里面的按钮点击时,执行itemcommond
    在这个事件里面e,转换成按钮,拿到(e as Button).Attributes["Test"]
      

  8.   

    GridView 有一个DataKeyName的属性。
    一般我们绑定的时候只是一个主键,DataGrid只能设置一个,不过GridView可以设置多个。比如设置“id”为GridView的DataKeyName的值(一个的话要在控件属性里设置。如果是要在代码里写,是一个数组)要读取到这个ID的时候,只需要要DataKeys这个属性,如下
    string mykey = this.GridView1.DataKeys[e.NewEditIndex].Value.ToString();
    这样,取到的mykey就是这条记录的“id”值。如果是一个模板列,可以给这个按钮的CommandName属性设置一个值,比如xx.CommandName="xx";
    然后在GridView的事件RowCommand里写具体代码了,如
    //点击添加事件
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "xx")
            {
                ……
            }
        }其实用法和DataGrid差不多