这是用C#写的一个asp.net网站,一个简单的更新~数据库链接的是Northwind的categories表,链接没有问题。前面也设置过了:GridView1.DataKeyNames = new string[] { "CategoryID" };但是一点更新,就会出现:索引超出范围。必须为非负值并小于集合大小。
参数名: index
问题已经找出来了,在红色的部分,这部分如果直接换成e.RowIndex+1就可以做,可是很奇怪为什么取不出gridview.DataKey的值,求问怎么改…… protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
sqlcon = new SqlConnection(strCon);
string sqlstr = "update Categories set CategoryName='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',Description='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim() + "' where CategoryID='"
+ GridView1.DataKeys[e.RowIndex].Value.ToString()+ "'";
sqlcom = new SqlCommand(sqlstr, sqlcon);
sqlcon.Open();
sqlcom.ExecuteNonQuery();
sqlcon.Close();
GridView1.EditIndex = -1;
bind();
}请求高手指点~
参数名: index
问题已经找出来了,在红色的部分,这部分如果直接换成e.RowIndex+1就可以做,可是很奇怪为什么取不出gridview.DataKey的值,求问怎么改…… protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
sqlcon = new SqlConnection(strCon);
string sqlstr = "update Categories set CategoryName='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',Description='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim() + "' where CategoryID='"
+ GridView1.DataKeys[e.RowIndex].Value.ToString()+ "'";
sqlcom = new SqlCommand(sqlstr, sqlcon);
sqlcon.Open();
sqlcom.ExecuteNonQuery();
sqlcon.Close();
GridView1.EditIndex = -1;
bind();
}请求高手指点~
看不出有什么问题哦!