关于用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(), 用DotNetBar的TabControl制作用户控件usercontrol时遇到的问题!!!!求高手 C#记事本的简单问题 winform 里面怎么用textbox 显示数据库中查询出来的列啊? 抓取论坛数据 求教字符串的转换 怎么自动生成C#里面各个接口说明的帮助说明 用XDE画一个类图,怎么成员函数的返回值都不能在类图里显示出来的? 我的.net版本是vs2003,我想让主窗体运行时隐藏起来,可是不管用?为何?? 登录窗体密码显示 关于Remoting注册的问题 小弟求一关于数据窗体向导的问题 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,将您的办法放上,我好给分届了。谢谢!