如题, 在datagridview中, 已经选择了数据源,在界面的Load中有:
// TODO: 这行代码将数据加载到表“waterMeterDataDataSet.InspectFactory”中。您可以根据需要移动或移除它。
this.inspectFactoryTableAdapter.Fill(this.waterMeterDataDataSet.InspectFactory)
问题是,如果在datagridview中,修改了数据(不是添加)后,希望 点击按钮,该数据库的内容也同时修改。应该如何实现?
求高人指点, 在线等待!!!
// TODO: 这行代码将数据加载到表“waterMeterDataDataSet.InspectFactory”中。您可以根据需要移动或移除它。
this.inspectFactoryTableAdapter.Fill(this.waterMeterDataDataSet.InspectFactory)
问题是,如果在datagridview中,修改了数据(不是添加)后,希望 点击按钮,该数据库的内容也同时修改。应该如何实现?
求高人指点, 在线等待!!!
先用if判断是否修改了数据,如果改了就用update 修改下并绑定保存到数据库中啊。。
1.如果你是用一个按钮来完成所有数据的更改.就将数据全删除了.再将datagridview的数据全部添加到数据库中.
2.如果你是一行一个按钮用来添加和更新那就好说了.通过点击这行获取到当前的行号将数据源中当前行的旧数据删除,读取当前新行的数据(你的数据源是DataTabel),你没有主键是个麻烦事.不能直接通过主键删除或更改数据.
this.waterMeterDataDataSet.AcceptChanges();
如果有唯一标识,我说一个方法,假设你的修改按钮只有一个,一下可以修改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();
}
}
依我看来,那你表设计不合理。建议还是加上主键,否则很难办。Update方法道理是一样的,你需要指定UpdateCommand,你连唯一标识都没有,如何Update?
这个是我以前发过的贴,我想你应该适用.
SqlCommandBuilder虽然会自动生成更新、修改、删除的sql语句,进行更新。
可是
当表中没有主键时,自动生成的SQL语句进行UPDate时,会出现异常信息。 异常信息为:用SqlCommandBuilder更新DataSet,遇到“对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成”问题。参见:http://blog.csdn.net/sunjiakai/article/details/4090051
为什么不在数据库中打开呢?
不是只有int类型的才能当主键。只有没有重复数据出现都可以。
你添加一个自增列吧。
建一个新表,表结构比原表多一列主键(自增),把原表数据Insert新表,删掉原表,把新表改名就OK了