日期:2014-05-18  浏览次数:20398 次

GridView基于删除错误:索引超出范围。必须为非负值并小于集合大小。参数名index
删除代码如下:
  SqlConnection sqlcon;
  SqlCommand sqlcom;
  string strCon = "server=.;uid=sa;pwd=;database=ASPNET配置";
  protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
  {
  // SqlConnection cn = new SqlConnection("server=.;uid=sa;pwd=;database=ASPNET配置");

  string sqlstr = "delete from 表 where UserId='" + GridView1.DataKeys[e.RowIndex].Value.ToString()+ "'";
  sqlcon = new SqlConnection(strCon);
  sqlcom = new SqlCommand(sqlstr, sqlcon);
  sqlcon.Open();
  sqlcom.ExecuteNonQuery();
  sqlcon.Close();
  this.DataBind();
  }

------解决方案--------------------
绑定gridview的时候配置了datakeys没有?
最好代码贴全点
------解决方案--------------------
C# code
 /// <summary>
        /// 删除一条数据
        /// </summary>
        public void Delete(int KID)
        {

            StringBuilder strSql = new StringBuilder();
            strSql.Append("delete from SYS_CYLB ");
            strSql.Append(" where KID=@KID ");
            SqlParameter[] parameters = {
                    new SqlParameter("@KID", SqlDbType.Int,4)};
            parameters[0].Value = KID;

            DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
        }