我在Windows应用程序中使用DataGrid控件,在显示数据时,想同时对其中的某些表项的数据进行修改,那我怎么才知道这些数据已经修改了,并且可以获得这些修改后得值,然后进行更新数据库?请大家指教?

解决方案 »

  1.   

    如果你用DataSet做数据容器的话,可以用
    dataSet.GetChanges()
      

  2.   

    不太明白hejunbin(何俊斌) 的意思 
    我的数据源是一个DataTable  在修改dataGrid中显示的数据时 dataTable或者dataSet数据源能“感受”得到么?
      

  3.   

    能,你用另一个DataGrid的DataSource设为dataSet.GetChanges();看一看就知道效果了
      

  4.   

    jointan() 谢谢。能具体给点代码吗,学习。
      

  5.   

    dataSet.GetChanges(); 就是提取你对dataset做出的所有修改的,然后在用UPDATA,更新就ok了
      

  6.   

    DataSet addSet = dataset.GetChanges(DataRowState.Added);//取得新增行
    DataSet delSet = dataset.GetChanges(DataRowState.Deleted);//取得被删除的行
    DataSet mdfSet = dataset.GetChanges(DataRowState.Modified);//取行被修改过的行MSDN中描述的很清楚,你在MSDN中查一下DataSet类,就可以看到了
      

  7.   

    我指的是 DataGrid的DataSource设为dataSet.GetChanges(); 谢谢。
      

  8.   

    假设你的DataGrid名称叫dataGrid1,再新建一个DataGrid名称叫dataGrid2
    DataSet sdt=(DataSet)dataGrid1.DataSource;
    DataSet cdt=sdt.GetChanges();
    dataGrid2.DataSource=cdt;
    dataGrid2.DataMember=dataGrid1.DataMember;
      

  9.   

    问题是我先用:
    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);
    }
    报”未将对象的引用设置到对象的实例。“
      

  10.   

    报歉,打错了 前面一句应该是 DataSet ds=(dataSet)dataGrid1.DataSource, 没有 as DataSet
      

  11.   

    你用MessageBox.Show(dataGrid1.DataSource.GetType().ToString())看看这个DataSource到底是DataSet还是DataTable或是DataView
    如果是DataTable,可以用DataTable.DataSet来取得DataSet;
    如果是DataView,可以用DataView.Table.DataSet来取得DataSet
      

  12.   

    是dataview,但我vs2003写的语法检查通不过,请给具体代码试试.
      

  13.   

    DataView dv=dataGrid1.DataSource as DataView;
    DataSet ds=dv.Table.DataSet;
    DataSet changes=ds.GetChanges();
      

  14.   

    谢谢jointan(), 该部分的问题已经解决,虽然后面有”无法处理请求无法找到TableMapping ...或DataTable....“这样的报错,我先去处理,如果有困难,再联系您。
    另外,我有个贴,就是关于这样的问题的,http://community.csdn.net/Expert/topic/5065/5065005.xml?temp=.218075,将您的办法放上,我好给分届了。谢谢!
      

  15.   

    不好意思,打错了,请jointan() 上我的贴http://community.csdn.net/Expert/topic/5065/5065005.xml?temp=.218075,我就可以结贴了,谢谢jointan(),