关于用DataGridg更新数据库的问题? 我在Windows应用程序中使用DataGrid控件,在显示数据时,想同时对其中的某些表项的数据进行修改,那我怎么才知道这些数据已经修改了,并且可以获得这些修改后得值,然后进行更新数据库?请大家指教? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果你用DataSet做数据容器的话,可以用dataSet.GetChanges() 不太明白hejunbin(何俊斌) 的意思 我的数据源是一个DataTable 在修改dataGrid中显示的数据时 dataTable或者dataSet数据源能“感受”得到么? 能,你用另一个DataGrid的DataSource设为dataSet.GetChanges();看一看就知道效果了 jointan() 谢谢。能具体给点代码吗,学习。 dataSet.GetChanges(); 就是提取你对dataset做出的所有修改的,然后在用UPDATA,更新就ok了 DataSet addSet = dataset.GetChanges(DataRowState.Added);//取得新增行DataSet delSet = dataset.GetChanges(DataRowState.Deleted);//取得被删除的行DataSet mdfSet = dataset.GetChanges(DataRowState.Modified);//取行被修改过的行MSDN中描述的很清楚,你在MSDN中查一下DataSet类,就可以看到了 我指的是 DataGrid的DataSource设为dataSet.GetChanges(); 谢谢。 假设你的DataGrid名称叫dataGrid1,再新建一个DataGrid名称叫dataGrid2DataSet sdt=(DataSet)dataGrid1.DataSource;DataSet cdt=sdt.GetChanges();dataGrid2.DataSource=cdt;dataGrid2.DataMember=dataGrid1.DataMember; 问题是我先用:DataSet ds=(DataSet)dataGrid1.DataSource as DataSet;运行时报错“指定的转换无效”后来改成:DataSet ds=dataGrid1.DataSource as DataSet;ds里面是空的,而后面的又报错;DataSet dsChanges=ds.GetChanges();if(dsChanges!=null){ds.Merge(dataService.update_multi(dsChanges,"* from item_prices","item_prices","delta"),true);}报”未将对象的引用设置到对象的实例。“ 报歉,打错了 前面一句应该是 DataSet ds=(dataSet)dataGrid1.DataSource, 没有 as DataSet 你用MessageBox.Show(dataGrid1.DataSource.GetType().ToString())看看这个DataSource到底是DataSet还是DataTable或是DataView如果是DataTable,可以用DataTable.DataSet来取得DataSet;如果是DataView,可以用DataView.Table.DataSet来取得DataSet 是dataview,但我vs2003写的语法检查通不过,请给具体代码试试. DataView dv=dataGrid1.DataSource as DataView;DataSet ds=dv.Table.DataSet;DataSet changes=ds.GetChanges(); 谢谢jointan(), 该部分的问题已经解决,虽然后面有”无法处理请求无法找到TableMapping ...或DataTable....“这样的报错,我先去处理,如果有困难,再联系您。另外,我有个贴,就是关于这样的问题的,http://community.csdn.net/Expert/topic/5065/5065005.xml?temp=.218075,将您的办法放上,我好给分届了。谢谢! 不好意思,打错了,请jointan() 上我的贴http://community.csdn.net/Expert/topic/5065/5065005.xml?temp=.218075,我就可以结贴了,谢谢jointan(), 曾看过一种报表控件,可以拉动表头,如把表头拉到左边可分组,请问那种控件是叫什么名字啊? 请教一个override CreateParams的问题 做过聊天室的同学请进 Webform如何调用外部exe文件的问题 非常基础~非常难解的问题 CrystalReport部署问题 象.NET集成环境里面的浮动窗体是怎么实现的 能否重写静态方法? 请教类似iweboffice或者NTKO的东西该如何去开发? 用什么环境来开发C#的程序? 小弟求一关于数据窗体向导的问题 VS.NET C# 软件工程师
dataSet.GetChanges()
我的数据源是一个DataTable 在修改dataGrid中显示的数据时 dataTable或者dataSet数据源能“感受”得到么?
DataSet delSet = dataset.GetChanges(DataRowState.Deleted);//取得被删除的行
DataSet mdfSet = dataset.GetChanges(DataRowState.Modified);//取行被修改过的行MSDN中描述的很清楚,你在MSDN中查一下DataSet类,就可以看到了
DataSet sdt=(DataSet)dataGrid1.DataSource;
DataSet cdt=sdt.GetChanges();
dataGrid2.DataSource=cdt;
dataGrid2.DataMember=dataGrid1.DataMember;
DataSet ds=(DataSet)dataGrid1.DataSource as DataSet;
运行时报错“指定的转换无效”
后来改成:
DataSet ds=dataGrid1.DataSource as DataSet;
ds里面是空的,而后面的又报错;
DataSet dsChanges=ds.GetChanges();
if(dsChanges!=null)
{
ds.Merge(dataService.update_multi(dsChanges,"* from item_prices","item_prices","delta"),true);
}
报”未将对象的引用设置到对象的实例。“
如果是DataTable,可以用DataTable.DataSet来取得DataSet;
如果是DataView,可以用DataView.Table.DataSet来取得DataSet
DataSet ds=dv.Table.DataSet;
DataSet changes=ds.GetChanges();
另外,我有个贴,就是关于这样的问题的,http://community.csdn.net/Expert/topic/5065/5065005.xml?temp=.218075,将您的办法放上,我好给分届了。谢谢!