呵呵,这也不是什么怪问题了,这只是控件的工作机制.输入新行后,如果不移开焦点,系统就认为用户没有提交修改.所以更新前,得先提交,可通过移开焦点,或EndEdit方法实现.

解决方案 »

  1.   

    更新完后立即 Update()
      

  2.   

    新增行必须有数据,datagridview在Allowuseraddnewrow=true时,同时加一个datagridviw_Allowuseraddnewrow事件:datagridviw.allouseraddnewrow=false,这样,如果新增行无数据,再按按钮时,则不会出现第二个新增行!下面是利用datagridviw更新数据库代码dscpxx1为dataset,自己定义的
    try
                {
                    con = new OleDbConnection(constr);
                    con.Open();
                    OleDbCommand cmd = new OleDbCommand("Select from Tabel", con);
                    OleDbDataAdapter da = new OleDbDataAdapter();
                    da.SelectCommand = cmd;
                    OleDbCommandBuilder cbuild = new OleDbCommandBuilder(da);
                    da.Update(dscpxx1, "TbStoreChanpinxinxi");
                    MessageBox.Show("更新成功");
                    con.Close();
                    con.Dispose();
                    cmd.Dispose();
                    da.Dispose();
                    dscpxx1.Dispose();
              
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
               
      

  3.   

    原來是toolstrip的問題,我換成按鈕不用toolstrip上的自帶的按鈕就可以了,就保存不行,其它的都可以正常運行,