而且,目测你所谓的删除并不是真的remove,而是把那一行赋值为空,这是不行的.
已经绑定了数值型的字段,数据是不可以为null的

解决方案 »

  1.   

    我本来是有一个保存按钮,删除后点保存的
    听你这么一说是不是需要直接修改数据库再绑定?
    或者说怎么样修改DataTable然后更新数据库并重新绑定?
      

  2.   

    绑定数据后不直接修改Datagridview,修改DataTable就可以了。
      

  3.   

    DataGridView绑定数据删除信息示例
    //定义datatier类型的私有字段
      private datatier dt = new datatier();
    //删除指定信息事件按钮
     private void btn_delete_Click(object sender, EventArgs e)
            {
                dt.Remove(txt_name_delete.Text);//调用datatier对象的Remove()方法,从数据库中删除数据
                dataGridView1.DataSource = dt.Select();//更新dataGridView1控件中的信息
                Clear();//清空TextBox控件中的文本
            }//codego.net/tags/1/1/
    //自定义类删除信息
     class datatier
        {
            private SqlConnection GetConnection()
            {
                //返回连接到数据库的SqlConnection对象
                return new SqlConnection("server=WRET-MOSY688YVW\\MRGLL;database=db_test;Trusted_Connection=true");
            }
     public void Remove(string Name)
            {
                SqlConnection sc = GetConnection();//调用GetConnections()方法,得到连接对象
                try
                {
                    sc.Open();//打开到数据库的连接
                    SqlCommand cmd = new SqlCommand(//创建SqlCommand对象
                        "delete from tb_friend where names=@names", sc);
                    cmd.Parameters.Add("@names", SqlDbType.VarChar).Value = Name;//向SqlCommand对象添加参数
                    cmd.ExecuteNonQuery();//执行SqlCommand对象中的SQL命令
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    if (sc.State == ConnectionState.Open)//判断是否连接数据库
                    {
                        sc.Close();//如果已经连接则关闭连接
                    }
                }
            }
      

  4.   

    我最后的操作是选择整行删除时不跳过将单元格值设为Null,框选单元格删除时就进行列类型分别处理