asp.net中gridview更新时出现错误:指定的参数已超出有效值的范围。参数index

2024-12-29 20:41:54
推荐回答(3个)
回答1:

GridView1.Rows[e.RowIndex] --->你设定了绑定的主键了吗?

例如用dataset绑定的话没有写以下第二句就会出现你的异常。
GridView1.DataSource = ds.Tables[0];
GridView1.DataKeyNames = new string[] { "id" };
GridView1.DataBind();

没有设定KEYNAMES你在GridView1.Rows[e.RowIndex] e.RowIndex就是NULL当然越界。

回答2:

我也遇到过这个问题!
你的问题很明显,你没有设置绑定主键即你的代码中少
string uid = this.GridView1.DataKeys[e.RowIndex].Value.ToString();
这是我的网页中的更新代码,可能对你有帮助(正在使用的代码)
protected void GridView1_OnRowUpdating(object sender, GridViewUpdateEventArgs e)
{
string id = this.GridView1.DataKeys[e.RowIndex].Value.ToString();
string FAQ_dns = WebConfigurationManager.ConnectionStrings["FAQConnectionString"].ToString();
SqlConnection FAQ_myConn = new SqlConnection(FAQ_dns);
FAQ_myConn.Open();
GridViewRow row = this.GridView1.Rows[e.RowIndex];
SqlCommand scd = new SqlCommand("update Question set QU_type='"
+ ((DropDownList)(GridView1.Rows[e.RowIndex].Cells[1].FindControl("DropDownList1"))).SelectedValue + "'where id=" + id, FAQ_myConn);
scd.ExecuteNonQuery();
Response.Write("");
FAQ_myConn.Close();
GridView1.EditIndex = -1;
this.bind();
我更新的是DropDownList空件,但都大同小异你用的是TextBox,仿照这改一下一定有帮助!

回答3:

还有一种情况,你把列设为不可编辑了ReadOnly="true"
这也是一种情况