前台添加一模版列,里面添加一个Button<asp:TemplateField HeaderText="测试"> <ItemTemplate> <asp:Button ID="Button1" CommandName="btn" runat="server" Style="position: relative" Text="Button" /> </ItemTemplate></asp:TemplateField>后台protected void gv_Company_RowCommand(object sender, GridViewCommandEventArgs e){ if (e.CommandName == "btn"){ int index = Convert.ToInt32(e.CommandArgument); DataKey key = this.gv_Company.DataKeys[index]; string str = key.Value.ToString(); } } //行数据绑定 protected void gv_Company_RowDataBound(object sender, GridViewRowEventArgs e){ if (e.Row.RowType == DataControlRowType.DataRow){ Button bt = new Button(); bt = (Button)e.Row.Cells[6].FindControl("Button1"); bt.CommandArgument = e.Row.RowIndex.ToString(); } } 那么,如果是在GridView里已经设置了LinkButton为事件处理按钮,将通过以下方法获取索引protected void gv_Company_RowCommand(object sender, GridViewCommandEventArgs e){ if (e.CommandName == "btn"){ GridViewRow drv = ((GridViewRow)(((LinkButton)(e.CommandSource)).Parent.Parent)); object result = (object)gv_Company.DataKeys[drv.RowIndex][int];//int为DataKeys位置 } } 转载于:https://www.cnblogs.com/ke7in/archive/2008/07/17/1245029.html