我的DataGridView绑定了DataSet的一个DataTable表,我启用了DataGridView的删除功能,但是只是DataGridView控件上显示删除,数据库并没有进行删除。该如何让删除同步到数据库?
另外请讲解下DataGridView的用法,详细点.

解决方案 »

  1.   

    DataTable只是内存中的数据,所以你删除的仅仅是内存数据。如果要将更改提交到数据库,可以编写SQL语句执行,也可以使用DataAdapter.Update方法。
      

  2.   

    绑定数据的时候,用SqlCommandBiulder
    这样就会生成删除,修改,增加命令对象
    最后调用ds.update()就可以更新到数据库了。
      

  3.   

    一、定义几个窗体级的变量 private SqlConnection conn = null; 
    private SqlDataAdapter adpter = null; 
    private DataSet ds = null; 二、显示数据用的代码:(假设在窗体加载时) 
    假设你窗体上有一个多为bookDataGridView的DataGridView控件
    private void frmMain_Load(object sender, EventArgs e) 

        conn = new SqlConnection(@"Server=(local)\sqlexpress;Integrated Security=True;Database=scc"); 
        adpter = new SqlDataAdapter("select * from 表名称", conn); 
        SqlCommandBuilder scb = new SqlCommandBuilder(adpter); 
        ds = new DataSet(); 
        adpter.Fill(ds); 
        if (ds !=null)
        { 
            bookDataGridView.DataSource = ds.Tables[0];
        } 

    注意在你要删除的表里设置一个主键,也就是唯一索引 三、删除数据的代码: 
    private void btnDelete_Click(object sender, EventArgs e) 
    {  
        DataTable dt = ds.Tables[0]; 
        if (bookDataGridView.Rows.Count <= 0 || 
            bookDataGridView.SelectedRows.Count <= 0) return; 
        
        //定义一个数组保存所选中的行 
        int[] sel_rows = new int[bookDataGridView.SelectedRows.Count]; 
        for (int i = 0; i < bookDataGridView.SelectedRows.Count; i++) 
        { 
          sel_rows[i] = bookDataGridView.SelectedRows[i].Index; 
        } 
        
        //根据数组选择所得到的行号删除数据表 
        for (int i = 0; i < sel_rows.Length; i++) 
        { 
            dt.Rows[sel_rows[i]].Delete(); 
        } 
        adpter.Update(ds);//用这句来更新数据数据,真正地删除掉(如果不删除数据里的资料就不用这条语句) 
    }

    四、DataGridView的用法太多了,你可能要在网上找些资料看看才可以的,一下子很难说得清楚的
      

  4.   

    DataGridView只看名称你也应该知道这只是一个类似视图的虚拟表,要想对实际表进行操作就必须执行sql语句
      

  5.   

    DGV是就是内存中的一个临时表,对其删除操作影响不到数据库。
    LZ已经给出解决方法了,不过你可以用这个思路就是:
    找到要删除的数据,先将其在数据库中删除,再绑定DGV,也可以的
      

  6.   

    直接用DataAdapter.Update(DataSet);就可以了
      

  7.   

    DataGridView就是用来显示数据的啊
    可以在它上面做删除,修改,然后保存到数据库就可以了
     它还可以对数据进行排序
      就本上就是查,删,改这三种操作