DataGrid问题!不能更新数据库!?
lyo 2003-03-22 10:26:06 string UpdateCmd="update liren set id=@id,name=@name,title=@title,statement=@statement,time=@time";
SqlCommand sqlCmd=new SqlCommand(UpdateCmd,sqlConnection1);
sqlCmd.Parameters.Add(new SqlParameter("@id",SqlDbType.Int,4));
sqlCmd.Parameters.Add(new SqlParameter("@name",SqlDbType.VarChar,50));
sqlCmd.Parameters.Add(new SqlParameter("@title",SqlDbType.VarChar,100));
sqlCmd.Parameters.Add(new SqlParameter("@statement",SqlDbType.Text,16));
sqlCmd.Parameters.Add(new SqlParameter("@time",SqlDbType.DateTime,8));
sqlCmd.Parameters["@id"].Value=DataGrid1.DataKeys[(int)e.Item.ItemIndex];
string[] colvalue={"@id","@name","@title","@statement","@time"};
int numCols=e.Item.Cells.Count;
for(int i=3;i<numCols-1;i++)
{
string tableCmd=((TextBox)e.Item.Cells[i].Controls[0]).Text;
sqlCmd.Parameters[numCols-1].Value=colvalue;
}
sqlCmd.Connection.Open();
sqlCmd.ExecuteNonQuery();
Message.Text="<b>已更新纪录</b><br>"+UpdateCmd;
DataGrid1.EditItemIndex=-1;
sqlCmd.Connection.Close();
SqlDataAdapter sda=new SqlDataAdapter("select * from liren",sqlConnection1);
DataSet ds=new DataSet();
sda.Fill(ds,"liren");
DataGrid1.DataSource=ds.Tables["liren"].DefaultView;
DataGrid1.DataBind();
在TextBox中修改完数据后,一点击update,就出错:“ System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名:index
” 行 164: sqlCmd.Parameters["@id"].Value=DataGrid1.DataKeys[(int)e.Item.ItemIndex];
可我并没有超出int id字段的长度啊?!
谁能帮我看看哪里错了?多谢!