C# Winform中,我把DataGridView與DataSet邦定後,由用戶錄入數據後保存,發現最後一行數據有時沒有保存到保存代碼如下:
this.dgv_D.CommitEdit(DataGridViewDataErrorContexts.Commit);
BindSourceD.EndEdit();
obAD_dgvD.Update(obDS.Tables["TableD"]);

解决方案 »

  1.   

    我也遇到过这样的问题,我是这样处理的,吧DataTable中的东西拿出来,建立一个对象数组object[],更新了以后先给DataSource=null,然后在DataSource=objs;
      

  2.   

    绑定后将你的datagridview refresh()下
      

  3.   

    添加一下:
    this.Validate();
    this.BindingSource.EndEdit();
    obAD_dgvD.Update(obDS.Tables["TableD"]);
      

  4.   

    当你添加一条新数据后,gridview需要重新绑定一下,才能看到新的数据。
      

  5.   

    这个问题我以前有个学生碰到过,后来发现是如果我们添加一行后,只有当你将鼠标移到其他行的时候DataGridView才会确定你的输入,如果此时直接保存就会漏掉一行。所以当时就采用了取巧的方法,当你要保存的时候,将当前行的下标改一下。int rowIndex = dataGridView1.CurrentCell.RowIndex;
    int columnIndex = dataGridView1.CurrentCell.ColumnIndex;//利用代码实现鼠标上移和下移,以确保DataGridView明白你的变化
    dataGridView1.CurrentCell = dataGridView1.Rows[rowIndex-1].Cells[columnIndex];
    dataGridView1.CurrentCell = dataGridView1.Rows[rowIndex].Cells[columnIndex];
      

  6.   

    关注一下,看来这和datagridview 如何判断数据被更新或追加有关,13楼的思路应该可以
      

  7.   

    謝謝各位,13樓的方法可以,但有沒有更好的方法呢,比較DataGridView在換行後,是怎樣把數據能,
    是什麼方法呢?
      

  8.   

    在触发某一事件的时候,你把用户录入的数据添加到DataGridView的最后一行也可以!
      

  9.   


    应该属于焦点问题。。在保存的时候把datagridview当前行焦点转移掉试试。。
      

  10.   

    调用一下DataGridView的EndEdit()方法
      

  11.   

    在绑定前 this.dgv_D.Finish();
      

  12.   

    Winform中DataGridView中沒有這個方法。
      

  13.   

    把这句obAD_dgvD.Update(obDS.Tables["TableD"]);放到GDV的事件中。