注册 登录
编程论坛 ASP.NET技术论坛

总提示:索引超出范围。必须为非负值并小于集合大小。

雪雨星风 发布于 2008-06-13 17:54, 969 次点击
极度郁闷中,困扰了一天了,做了4遍,结果还是一个样,紧急求救!!!!




string strCon = "Data Source=(local);Database=baoming;Uid=sa;Pwd=admin";

    SqlConnection sqlcon;

    SqlCommand sqlcom;

    protected void gvUser_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {     

        string sqlstr = "delete from Stu_Info where userID='" + gvUser.DataKeys[e.RowIndex].Value.ToString() + "'";

        sqlcon = new SqlConnection(strCon);

        sqlcom = new SqlCommand(sqlstr, sqlcon);

        sqlcon.Open();

        sqlcom.ExecuteNonQuery();

        sqlcon.Close();

        bind();
    }
    public void bind()
    {

        string sqlstr = "select * from Stu_Info";

        sqlcon = new SqlConnection(strCon);

        SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);

        DataSet myds = new DataSet();

        sqlcon.Open();

        myda.Fill(myds, "Stu_Info");

        gvUser.DataSource = myds;

        gvUser.DataKeyNames = new string[] { "userID" };//主键

        gvUser.DataBind();

        sqlcon.Close();

    }
4 回复
#2
雪雨星风2008-06-13 17:58
我放了个复选框  还有另外的两个按钮 1个全选  1个删除  和QQ邮箱差不多的效果 我用以下方法删除选中项  还是提示  


for (int i = 0; i < gvUser.Rows.Count;i++ )
        {
            //string userID = "";
           if(((CheckBox)gvUser.Rows[i].FindControl("ckOne")).Checked==true)
           {
               int id =Convert.ToInt32(gvUser.Rows[i].Cells[13].Text);
               //userID = this.gvUser.DataKeys[.DataItemIndex].Value.ToString();
               //Response.Write(str);
               string sqlconnstr = ConfigurationManager.AppSettings["ConnStr"].ToString();
               SqlConnection conn = new SqlConnection(sqlconnstr);
               SqlCommand comm = new SqlCommand("delete from Stu_Info where userID=" + id, conn);
               conn.Open();
               Response.Write("<script language=javascript>window.alert('确定要删除选定的内容吗?')</script>");
               comm.ExecuteNonQuery();            
               chaxun();         
               conn.Close();
           
           }

        }
#3
snipen2008-06-13 19:59
string sqlstr = "delete from Stu_Info where userID='" + gvUser.DataKeys[e.RowIndex].Value.ToString() + "'";
这个是不是要改成string sqlstr = "delete from Stu_Info where userID=" + gvUser.DataKeys[e.RowIndex].Values["userID"].ToString();你数据库中的ID是什么类型的?
#4
tomtory2008-06-14 09:27
那点包的错哦!
#5
tomtory2008-06-14 09:28
看一下ID取到没有!还有连接字符串取道没有的哦
1