为什么不清除 datagridview?以及如何清除 datagridView?

Why not clear datagridview?? and how to Clear datagridView?

我想清除 datagridView 中的行,但每个代码都不起作用我搜索过它是错误吗??我的代码如下

  private DataSet modelDS = null;
  modelDS = db.getModelList();

 /* 
  class db{
     private DataSet ds = null;
    public db(){
       ds = new DataSet();
       setModelList();
     }
    private void setModelList(){
       //after DB Query
       oda.Fill(ds);  
     }
    public DataSet getModelList(){
       retrun ds;
    }
   }

  */

 dataGridView18.DataSource = modelDS.Tables[0];

  //row list delete or add  by user in only dataGridView
  //users can not save them and they click only reload button

private void button1_Click (object sender , EventArgs e){
    //reload button envent
    //after clearing DataGridView ,dataSource reloaded
    datagridView18.DataSource = null (not working)

    datagridView18.Rows.clear() (not working)
    
    DataTable dt = (DataTable)datagridview18.DataSource
    dt.Clear() or dt.Rows.Clear() (not working)
    
    foreach(DataGridViewRow row in datagrdiview18.Rows)
    datagridView18.Rows.Remove(row) (not working)
    
    dataGridView18.DataSource =  modelDS.Tables[0];

}

重新加载后,dataGridView 中的内容不显示 modelDS.Tables 的内容而是显示用户编辑的内容!!

我认为 datagridview 应该显示数据表的内容,因为数据源被设置为 null 并重新加载数据表。但它不显示数据表的内容

这是什么原因??以及如何解决?谢谢

尝试

datagridView18.DataSource = null

之后

datagridView18.DataBind()

list in dataGridView is not showing modelDS.Tables's list it is showing edited list by user!!

听起来您没有理解数据绑定是双向的。用户所做的任何更改都会保存到数据中table。当我们使用数据绑定时,这通常是我们想要的。假设您有这样的表单代码:

class Form1{

  private DataTable dt = new DataTable();

  public Form1(){
    InitializeComponenent();

    dt.Columns.Add("Name");
    dt.Rows.Add("John");
    

  }

  private void unbindButton_Click(...){
    someDataGridView.DataSource = null;
  }
  
  private void bindButton_Click(...){
    someDataGridView.DataSource = dt;
  }
  
  private void show00Button_Click(...){
    MessageBox.Show(dt.Rows[0][0].ToString()); 
  }
}
  • 您 运行 应用程序
  • 您点击绑定按钮
  • dgv 数据源已设置
  • 你看到约翰
  • 你编辑给玛丽
  • data table dt 已更改。是的,实际上数据table的内容被改变了。
  • 你点击解除绑定
  • 您点击 SHOW00,出现“mary”的消息框
  • 您点击绑定,“Mary”出现在网格中
  • 因为数据table被编辑,包含了Mary

如果您不想编辑原始 table,请复制它:

someDataGridView.DataSource = originalDataTable.Copy();