-- 作者:qfjordan
-- 发布时间:12/8/2005 5:27:00 PM
-- 高手请进,小弟我急死了
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { String updateCmd = "UPDATE Authors SET au_id = @Id, au_lname = @LName, au_fname = @FName, phone = @Phone, " + "address = @Address, city = @City, state = @State, zip = @Zip, contract = @Contract where au_id = @Id"; //应该了解ADO.net中的参数化编程吧 这里给解释一下!!??? 还有下面的,不知所云?????? SqlCommand myCommand = new SqlCommand(updateCmd, myConnection); myCommand.Parameters.Add(new SqlParameter("@Id", SqlDbType.NVarChar, 11)); myCommand.Parameters.Add(new SqlParameter("@LName", SqlDbType.NVarChar, 40)); myCommand.Parameters.Add(new SqlParameter("@FName", SqlDbType.NVarChar, 20)); myCommand.Parameters.Add(new SqlParameter("@Phone", SqlDbType.NChar, 12)); myCommand.Parameters.Add(new SqlParameter("@Address", SqlDbType.NVarChar, 40)); myCommand.Parameters.Add(new SqlParameter("@City", SqlDbType.NVarChar, 20)); myCommand.Parameters.Add(new SqlParameter("@State", SqlDbType.NChar, 2)); myCommand.Parameters.Add(new SqlParameter("@Zip", SqlDbType.NChar, 5)); myCommand.Parameters.Add(new SqlParameter("@Contract", SqlDbType.NVarChar,1)); myCommand.Parameters["@Id"].Value = MyDataGrid.DataKeys[(int)e.Item.ItemIndex]; //这个地方忘了告诉大家,我们必须在DataGrid中设置DataKeyField属性,MyDataGrid.DataKeys[(int)e.Item.ItemIndex]才能取得想要的关键字 int numCols = e.Item.Cells.Count; for (int i=2; i<numCols-1; i++) //skip first, second and last column { String colvalue =((System.Web.UI.WebControls.TextBox)e.Item.Cells[i].Controls[0]).Text; //中间你最好加上输入验证,然后再执行下列语句赋值给参数。 myCommand.Parameters[cols[i-1]].Value = colvalue; } myCommand.Connection.Open(); try { //更新数据 myCommand.ExecuteNonQuery(); //恢复只读状态 MyDataGrid.EditItemIndex = -1; } catch (SqlException exc) { //出错处理 } myCommand.Connection.Close(); BindGrid();//重新绑定数据,用的还是我原来写的那样的函数 [[color=#6600FF]size=4]我使用,web应用程序做的,最好能给提供各更好一点的DataGrid数据更新的程序,感觉上面的好像有不少错误,本人初学,多多帮助!!先谢了。。。。。。。。[/size][/color]
|