才学C#,问一个关于datagridview的简单问题:
由于在c#中,我们是先将数据库表中的数据放入离线数据源dataset中,然后在用dataset和一些控件(比如datagridview)绑定来显示给用户看,我想知道的是,
1、这样我在dataset中操作数据是不是会实时的在datagridview中反映出来?而在datagridview中对数据的操作是不是也会实时的反映到dataset中?
2、在dataset中中保存了值的原始值和当前值两个版本,那么在datagridview中怎么样分别得到当前值和原始值呢?是要对应到其对应的dataset中去吗?如果是要的话那么又怎么样对应呢?
3、怎么样实现将一个新行插入到现有的两行之间呢?我看了半天的msdn,还是没有找到答案,就只有请高手帮帮忙了!如果有这个方面的例子,发一份给我就更好了,我的mail是:[email protected]
由于在c#中,我们是先将数据库表中的数据放入离线数据源dataset中,然后在用dataset和一些控件(比如datagridview)绑定来显示给用户看,我想知道的是,
1、这样我在dataset中操作数据是不是会实时的在datagridview中反映出来?而在datagridview中对数据的操作是不是也会实时的反映到dataset中?
2、在dataset中中保存了值的原始值和当前值两个版本,那么在datagridview中怎么样分别得到当前值和原始值呢?是要对应到其对应的dataset中去吗?如果是要的话那么又怎么样对应呢?
3、怎么样实现将一个新行插入到现有的两行之间呢?我看了半天的msdn,还是没有找到答案,就只有请高手帮帮忙了!如果有这个方面的例子,发一份给我就更好了,我的mail是:[email protected]
解决方案 »
- String.Format @
- dataset删除数据库记录
- 每隔5秒执行一次,输出时间。
- 请问notifyIcon1隐藏后的用法
- winform.关闭窗体。exe文件依然存在内存中……
- 关于时间格式的一个问题,麻烦大家了!
- treeview有两层节点,怎样实现所有父节点无checkbox而所有子节点有checkBox
- 关于邮件发送
- 各位大虾,给小弟指导一下学C#的门路呀?????
- 开发WinForm程序谁用过Developer Express Inc.NET的成套控件,Release后的程序不能在其他机器上运行!!!!
- 三层结构中的异常是怎么处理的 ??????
- 100分求此段程序的可逆算法
插入数据有add方法
2、datagridview保存的是当前值,而dataset保存的是原始值,如果datagridview没更新dataset,可以通过datagridview的datasource来获得原始值;
3、好像不是很容易,不过我以前见过有人写过类似的方法,你自己去g一下。
2、没试过从DataGridView取得某数据行的Original版本。.net 2.0推荐使用BindingSource,从BindingSource.Current可以取得当前数据行不是吗?转换成DataRowView后应该能够取得Original版本和Current版本的,我想。
3、不清楚。有现实意义吗?什么场合非要这么做呢?
当然可以了。只要你加一个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);
我的解答:
(1)DataGrid虽然可以绑定多种类型的数据源(如DataSet,DataTable,DataView等),
实际上绑定的还是DataTable(其中DataSet用来包容多个DataTable及其关系,DataView用来控制对DataTable的显示和编辑).
(2)那么要插入行到DataTable中,可以先用DataTable.NewRow()来创建新行->给新行赋值DataRow["FieldName"]="value"->DataTable.Rows.Add这是我前几天看MSDN的结果,楼主看MSDN的方法估计不太对.
我一般总能在MSDN找到答案.