已经用了
dataGrid1.EndEdit(dataGrid1.TableStyles[0].GridColumnStyles[dataGrid1.CurrentCell.ColumnNumber], dataGrid1.CurrentRowIndex, false); 
dataGrid1.BindingContext[dataGrid1.DataSource].EndCurrentEdit(); 
但还是不行,
这次只是新增的时候出问题,不新增只是编辑的时候没有问题.
最后一个新增的老是被丢掉,即使焦点移开也是一样.即使编辑过其他记录也是一样.
而不新增只是编辑的时候,焦点不移开也能保存.
哪位大侠知道怎么回事帮忙解决一下.

解决方案 »

  1.   

    dataGrid1.DataSource=dt1.DefaultView ;
      

  2.   

    你这样写,应该没有问题,或者试试如下:
    DataView dv = dt1.DefaultView;
    dv.AllowNew = true;
    dataGrid1.DataSource = dv;
      

  3.   

    dt1.DefaultView.AllowNew=true; 
    dt1.DefaultView.AddNew(); 
    dt1.DefaultView.AllowNew=false;
      

  4.   

    dt1.DefaultView.AllowNew=true;
    DataRowView drv = dt1.DefaultView.AddNew();
    //Change value here
    drv.EndEdit();
    dt1.DefaultView.AllowNew=false;
      

  5.   

    在保存更新前调用下面语句:
    this.BindingContext[dataGrid1.DataSource,dataGrid1.DataMember].EndCurrentEdit();
      

  6.   

    试了lincon77()的也不行.
    贴全一点新增:
    dt1.DefaultView.AllowNew=true; 
    dt1.DefaultView.AddNew(); 
    dt1.DefaultView.AllowNew=false; 
    dataGrid1[dataGrid1.CurrentCell.RowNumber,2]=treeView1.SelectedNode.Text;
     
    保存:
    dataGrid1.EndEdit(dataGrid1.TableStyles[0].GridColumnStyles[dataGrid1.CurrentCell.ColumnNumber], dataGrid1.CurrentRowIndex, false); 
    dataGrid1.BindingContext[dataGrid1.DataSource].EndCurrentEdit(); MyClass cls1=new MyClass(); DataTable dt=cls1.update(dt1.GetChanges(),"baseset"," and class1='" + treeView1.SelectedNode.Text  + "'"); 
      

  7.   

    DataTable dt=cls1.update(dt1.GetChanges(),"baseset"," and class1='" + treeView1.SelectedNode.Text  + "'"); 
    着这一句后你调用DATASET的ACCEPT()方法接受改变了吗???
      

  8.   

    用了AcceptChanges()
    问题还是一样
    谁知道是怎么回事啊
    高手快来
      

  9.   

    搞定了,谢各位.原来是主键的问题
    addnew后面加这样一句
    dataGrid1[dt1.DefaultView.Count-1,0]=System.Guid.NewGuid();
    结帐,散分。