protectedvoid gvGrade_RowEditing(object sender, GridViewEditEventArgs e) ...{ gvGrade.EditIndex = e.NewEditIndex; gvGrade.DataSource = CreateDataSource(); gvGrade.DataBind(); } protectedvoid gvGrade_RowUpdating(object sender, GridViewUpdateEventArgs e) ...{ OleDbConnection updateConn =new OleDbConnection(connString); updateConn.Open(); In VS2005 It's very difficult to fetch the content of Hidden Column , so Fetch it from DataSet#region In VS2005 It's very difficult to fetch the content of Hidden Column , so Fetch it from DataSet string idSql ="SELECT distinct StuID FROM Grade where Department = '"+ ddDepart.SelectedItem.Value.ToString() +"'"; OleDbDataAdapter idAdapter =new OleDbDataAdapter(idSql, updateConn); DataSet idDs =new DataSet(); idAdapter.Fill(idDs, "id"); #endregion Calculate "colCount" because in "Page_Load" has "if(!IsPostBack)#region Calculate "colCount" because in "Page_Load" has "if(!IsPostBack) string calcSql ="SELECT COUNT(CourseName) FROM Course where Department = '" + ddDepart.SelectedItem.Value.ToString() +"'"; OleDbCommand calcCmd =new OleDbCommand(calcSql, updateConn); int colCount = (int)calcCmd.ExecuteScalar(); #endregion Define a arraylist to save "CourseName"#region Define a arraylist to save "CourseName" ArrayList tempAl =new ArrayList(); for (int i =3; i < colCount+3; i++) ...{ tempAl.Add(gvGrade.HeaderRow.Cells[i].Text); } #endregion Execute Update#region Execute Update for (int j =0; j < colCount; j++) ...{ //get the data from "TextBox" string getScore = ((TextBox)(gvGrade.Rows[e.RowIndex].Cells[j+3].Controls[0])).Text.Trim(); if (getScore =="") ...{ Response.Write("<script language='javascript'>alert('分数不可为空!');</script>"); break; } else ...{ string updateSql ="update Grade set Score="+ Int32.Parse(getScore) +" where StuID="+ idDs.Tables[0].Rows[e.RowIndex][0] +" and Course= "+"'"+ (string)tempAl[j] +"'"; OleDbCommand updateCmd =new OleDbCommand(updateSql, updateConn); updateCmd.ExecuteNonQuery(); } } #endregion updateConn.Close(); }