gridview中删除按钮报错问题    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {        string str= "delete  from Tb_Home where id='"+GridView1.DataKeys[e.RowIndex].Values.ToString()+"'";
        SqlConnection con = new SqlConnection();
        con.ConnectionString = "server=.;database=home;uid=sa;pwd=;";
        SqlCommand sqlcom = new SqlCommand("select * from Tb_Home", con);
        con.Open();
        sqlcom.ExecuteNonQuery();
        con.Close();        
    }
 运行时就报错:索引超出范围。必须为非负值并小于集合大小。
参数名: index 

解决方案 »

  1.   

    没有设置 GridView1的 DataKeyNames
      

  2.   

    试试:      string str= "delete  from Tb_Home where id='"+GridView1.DataKeys[e.RowIndex].Values.ToString()+"'"; 
           SqlConnection con = new SqlConnection();         
           con.ConnectionString = "server=.;database=home;uid=sa;pwd=;";        
            //SqlCommand sqlcom = new SqlCommand("select * from Tb_Home", con); 此句有问题
             SqlCommand sqlcom = new SqlCommand(str,con);
            con.Open(); 
            sqlcom.ExecuteNonQuery(); 
            con.Close(); 
      

  3.   

    先看看你设置DataKey了吗,然后
    用断点调试查看
    string str= "delete  from Tb_Home where id='"+GridView1.DataKeys[e.RowIndex].Values.ToString()+"'"; 
    是什么结果
    还有一个问题
    SqlCommand sqlcom = new SqlCommand("select * from Tb_Home", con); 
    con.Open(); 
    sqlcom.ExecuteNonQuery(); 
    怎么能用这几句做查询呢,应该是删除操作吧
    SqlCommand sqlcom = new SqlCommand("str", con); 
            
      

  4.   

    先看看你设置DataKey了吗,然后
    用断点调试查看
    string str= "delete  from Tb_Home where id='"+GridView1.DataKeys[e.RowIndex].Values.ToString()+"'"; 
    是什么结果
    还有一个问题
    SqlCommand sqlcom = new SqlCommand("select * from Tb_Home", con); 
    con.Open(); 
    sqlcom.ExecuteNonQuery(); 
    怎么能用这几句做查询呢,应该是删除操作吧
    SqlCommand sqlcom = new SqlCommand("str", con); 
            
      

  5.   

    设置 GridView的属性DataKeyNames为你的主键ID