才学C#,问一个关于datagridview的简单问题:
由于在c#中,我们是先将数据库表中的数据放入离线数据源dataset中,然后在用dataset和一些控件(比如datagridview)绑定来显示给用户看,我想知道的是,
1、这样我在dataset中操作数据是不是会实时的在datagridview中反映出来?而在datagridview中对数据的操作是不是也会实时的反映到dataset中?
2、在dataset中中保存了值的原始值和当前值两个版本,那么在datagridview中怎么样分别得到当前值和原始值呢?是要对应到其对应的dataset中去吗?如果是要的话那么又怎么样对应呢?
3、怎么样实现将一个新行插入到现有的两行之间呢?我看了半天的msdn,还是没有找到答案,就只有请高手帮帮忙了!如果有这个方面的例子,发一份给我就更好了,我的mail是:[email protected]

解决方案 »

  1.   

    datagridView 是什么??没见过也..........
      

  2.   

    好像不能自动更新, 你自己试试不就知道了
    插入数据有add方法
      

  3.   

    1、两者好像都不是实时
    2、datagridview保存的是当前值,而dataset保存的是原始值,如果datagridview没更新dataset,可以通过datagridview的datasource来获得原始值;
    3、好像不是很容易,不过我以前见过有人写过类似的方法,你自己去g一下。
      

  4.   

    1、当然能够实时的反应出来。
    2、没试过从DataGridView取得某数据行的Original版本。.net 2.0推荐使用BindingSource,从BindingSource.Current可以取得当前数据行不是吗?转换成DataRowView后应该能够取得Original版本和Current版本的,我想。
    3、不清楚。有现实意义吗?什么场合非要这么做呢?
      

  5.   

    Knight94(愚翁) 和 namhyuk(namhyuk)关于第一个问题的回答不一样哦,不知道哪个正确本人才学c#,写程序还有点生疏,看到这个地方又不懂,所以就请知道的告诉一下了
      

  6.   

    在对DataSet的操作会不会在DataGridView反映出来?
    当然可以了。只要你加一个EndEdit();
    DataRowView drv = ((DataRowView)xBindingSource.Current);
    drv["Column_Name"] = "x";
    drv.EndEdit();在datagridview中对数据的操作是不是也会实时的反映到dataset中?
    那是肯定的,不然还讲究什么当前版本、原始版本呢?在dataset中中保存了值的原始值和当前值两个版本,那么在datagridview中怎么样分别得到当前值和原始值呢?
    在DataGridView里随便瞎改些数据,然后DataSet ds = ((DataSet)gTBindingSource.DataSource);
    DataView dv = ds.Tables["Your_Table"].DefaultView;
    dv.RowStateFilter = DataViewRowState.ModifiedOriginal; // ModifiedCurrent显示当前版本,ModifiedOriginal显示原始版本。string str = String.Empty;
    foreach (DataRowView drv in dv1)
    {
         str += drv["Your_Column"] + "\n";
    }
    MessageBox.Show("Modified Rows: " + str);
      

  7.   

    上面那个xBindingSource或者gTBindingSource什么的是VS2005向导为你生成的,随着表名不同名字也不同。就要看你生成的是什么了。
      

  8.   

    问题1和2namhyuk(namhyuk) 已经回答得非常完整了,再对照MSDN肯定没问题的.问题3:怎么样实现将一个新行插入到现有的两行之间呢?
    我的解答:
    (1)DataGrid虽然可以绑定多种类型的数据源(如DataSet,DataTable,DataView等),
    实际上绑定的还是DataTable(其中DataSet用来包容多个DataTable及其关系,DataView用来控制对DataTable的显示和编辑).
    (2)那么要插入行到DataTable中,可以先用DataTable.NewRow()来创建新行->给新行赋值DataRow["FieldName"]="value"->DataTable.Rows.Add这是我前几天看MSDN的结果,楼主看MSDN的方法估计不太对.
    我一般总能在MSDN找到答案.