GridView的RowCommand事件中取得行索引 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) ...{ if (e.Row.RowType == DataControlRowType.DataRow)//如果是为数据行 ...{ ImageButton imgbtnup = (ImageButton)e.Row.Cells[1].FindControl("btnMoveUp");//找控件 imgbtnup.CommandArgument = e.Row.RowIndex.ToString();//设置与此BUTTON关联的命令参数 imgbtnup.Visible = e.Row.RowIndex != 0; ImageButton imgbtndown = (ImageButton)e.Row.Cells[2].FindControl("btnMoveDown"); imgbtndown.CommandArgument = e.Row.RowIndex.ToString(); imgbtndown.Visible = e.Row.RowIndex != ((DataSet)((GridView)sender).DataSource).Tables[0].Rows.Count - 1; } } protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) ...{ if (e.CommandName == "MoveUp") ...{ int index = Convert.ToInt32(e.CommandArgument);//取的行索引 DataKey key = this.GridView1.DataKeys[index]; string keyval = key.Value;//取得主键 } else if (e.CommandName == "MoveDown") ...{ int index = Convert.ToInt32(e.CommandArgument); DataKey key = this.GridView1.DataKeys[index]; string keyval = key.Value; } } 文章出处:http://blog.csdn.net/sonce8/archive/2007/09/09/1777777.aspx