你的新建行的rows.add()动作应该在你的值都填写完毕以后进行,在哪里设置个断点看看值是不是都进去了

解决方案 »

  1.   

    DataGridView.CommitEdit() 
    执行这个方法看看
      

  2.   

      private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
            {
                if (dataGridView1.IsCurrentCellDirty)
                {
                    dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
                }
            }
    是这样吗?还是没有效果
      

  3.   

    我没有想明白的就是为什么你需要通过DataRow newrow = Ds.Tables[0].NewRow(); 
    的方式去添加数据,因为用户在界面上添加了数据以后你的datagridview的数据源也相应自动更新了,也就是说你的数据源是不需要你去rows.add的
    所以不是很明白你最开始的代码的描述
      

  4.   

    错误提示写着Materialsupid列为空,不能让这例为空,你把这例给个值就可以了.
      

  5.   

    原来是bindingNavigator1上插入按钮的问题,我新增一个按钮,上用同样的事件保存就没问题,奇怪bindingNavigator1上的保存代码就出现提示