如题, 在datagridview中, 已经选择了数据源,在界面的Load中有:
       // TODO: 这行代码将数据加载到表“waterMeterDataDataSet.InspectFactory”中。您可以根据需要移动或移除它。
            this.inspectFactoryTableAdapter.Fill(this.waterMeterDataDataSet.InspectFactory)
 问题是,如果在datagridview中,修改了数据(不是添加)后,希望 点击按钮,该数据库的内容也同时修改。应该如何实现?
     求高人指点, 在线等待!!!

解决方案 »

  1.   

     只是在datagrideview中 修改了, 似乎没有改变列表吧?
      

  2.   

    你就写个语句啊。。
    先用if判断是否修改了数据,如果改了就用update 修改下并绑定保存到数据库中啊。。
      

  3.   

    最直接的办法
    1.如果你是用一个按钮来完成所有数据的更改.就将数据全删除了.再将datagridview的数据全部添加到数据库中.
    2.如果你是一行一个按钮用来添加和更新那就好说了.通过点击这行获取到当前的行号将数据源中当前行的旧数据删除,读取当前新行的数据(你的数据源是DataTabel),你没有主键是个麻烦事.不能直接通过主键删除或更改数据.
      

  4.   

    this.inspectFactoryTableAdapter.Update(this.waterMeterDataDataSet.InspectFactory);
    this.waterMeterDataDataSet.AcceptChanges();
      

  5.   

    数据库没有主键?那有标识列吧?就是不能修改的,唯一标识
    如果有唯一标识,我说一个方法,假设你的修改按钮只有一个,一下可以修改dgv的N行,然后点修改按钮
               //dt是datagridview的数据源
               for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        if (dt.Rows[i].RowState == DataRowState.Modified)
                        {
                            //TODO:数据库修改代码省略
                               ...........根据唯一标识修改..............
                               //提交
                            dt.Rows[i].AcceptChanges();
                        }
                    }
      

  6.   

    你好, 引用你的方法,运行是会报错:“其他信息: 当传递具有已修改行的 DataRow 集合时,更新要求有效的 UpdateCommand。”
      

  7.   

    你好,你的方法很实在。 可是,我是需要在dataGridview中,修改所有数据后,在一个btn中完成数据的写入。这个可能就没有标识。 有没有,不需要标识的呢?
      

  8.   

    没有唯一标识啊?
    依我看来,那你表设计不合理。建议还是加上主键,否则很难办。Update方法道理是一样的,你需要指定UpdateCommand,你连唯一标识都没有,如何Update?
      

  9.   

    http://topic.csdn.net/u/20110105/15/10fac19e-ced1-41f8-a969-4c4923aac3b8.html
      

  10.   

    http://topic.csdn.net/u/20110111/15/61eee9b2-7475-4875-8fe5-2ea0d0767db9.html
    这个是我以前发过的贴,我想你应该适用.
      

  11.   

    扬乐,提到的SqlCommandBuilder在这也不适用。
    SqlCommandBuilder虽然会自动生成更新、修改、删除的sql语句,进行更新。
    可是
    当表中没有主键时,自动生成的SQL语句进行UPDate时,会出现异常信息。  异常信息为:用SqlCommandBuilder更新DataSet,遇到“对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成”问题。参见:http://blog.csdn.net/sunjiakai/article/details/4090051
      

  12.   

    我在vs2008 中打开数据库,额。,,。,不知道怎么设定主键。,,仅能 看到了:列名,数据类型,允许null?
      

  13.   

    只有 int类型的才能当主键啊!
      

  14.   

    vs2008 中打开数据库?
    为什么不在数据库中打开呢?
    不是只有int类型的才能当主键。只有没有重复数据出现都可以。
    你添加一个自增列吧。
    建一个新表,表结构比原表多一列主键(自增),把原表数据Insert新表,删掉原表,把新表改名就OK了