实际上就是删除数据源中对应的几行:dg.DataMember.Remove(dg.SelectedRows[0].Index, dg.SelectedRows.Count);

解决方案 »

  1.   

    不用CurrencyManager做吗?删除一行都要用cm,因为dataGrid和dataTable的行排序不同,如果在dataGrid上重新sort过就删不准了。
      

  2.   

    dataGrid和dataTable的行排序不同????
    不可能的吧
      

  3.   

    CurrencyManager也是对数据源操作的啊
      

  4.   

    排序后的删除问题
    http://community.csdn.net/Expert/topic/3431/3431705.xml?temp=.4764063
      

  5.   

    private void button1_Click(object sender, System.EventArgs e)
    {
     
    for(int i = 0; i <= dataGrid1.VisibleRowCount;i++)
    {
    if(dataGrid1.IsSelected(i))
    {
    deleteData(int.Parse(dataGrid1[i,0].ToString()));
    }
    }
    dataGrid1.Refresh();
    }
    void deleteData(int id)
    {
    SqlTransaction tan = conn.BeginTransaction();
     
    try
    {
    SqlCommand comm = new SqlCommand("DELETE FROM 表1 WHERE MATEID = " + id ,conn,tan);
    comm.ExecuteNonQuery();
    tan.Commit();
    }
    catch(Exception ex)
    {
    tan.Rollback();
    MessageBox.Show(ex.Message);
    }
    这个应该可以