博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DataGridViewRow的DataBoundItem属性
阅读量:5049 次
发布时间:2019-06-12

本文共 1503 字,大约阅读时间需要 5 分钟。

已知值: DataGridViewRow dataGridViewRow

条件:   DataGridView绑定到DataTable上
求:      它对应的DataRow
解答:   DataRow dataRow = (dataGridViewRow.DataBounditem as DataRowView).Row;
需要解释一下:

(1)DataGridView.CurrentRow属性暴露DataGridView的当前行,即包含用户单击的单元格的行。该属性是一个DataGridViewRow对象。

(2)以这种方式获得的DataGridViewRow对象包含一个 DataBoundItem属性,它暴露绑定到DataGridView的底层数据,负责当前行显示的数据。这个属性是object类型,因为没有限制 DataGridView必须绑定到数据库。然而,绑定到数据集时,该属性实际上是一个DataGridView对象,因此可以将它强制转换为这种类型。

 

 

找到你要删除的行,比如要删除选中行的话。关键是DataGridViewRow的DataBoundItem属性。通过他可以取得DataTable中的对应行。

DataRowView drv = xxxDgv.SelectedRows[0].DataBoundItem as DataRowView;

drv.Row就是你绑定到的DataTable的一行。你可以对他进行任何操作了。

如果要从DataTable中删除这一行,可以drv.Row.Delete();

或者drv.Row.Table.Rows.Remove(drv.Row); 这样DataGridView中的对应行也就删掉了。

 

 

 

一个DataRow对象刚被创建之后其状态是Detached,是孤立的一个存在,所以建立了DataRow之后在DataRow中的单元填充了数据后还要通过DataTable.Rows.Add(DataRow)方法将此DataRow添加到DataTable,DataRow添加到DataTable后,   这个DataRow的状态就转变为Added。

当修改了这个DataRow后,这个DataRow状态转为Modified,当用DataRow.Delete()方法删除DataRow后,DataRow状态将转为Deleted,不过此行还存在在DataTable中的,只是状态改变了,这时用DataTable.Rows.Count查看行数,跟删除前是一样的。
只有在调用了DataTable.Remove(DataRow)方法后,此DataRow才被从DataTable移除,状态也回复到Detached孤立状态。但对于远程的Remoting的数据集DataTable.Remove(DataRow)方法不能从测表中移出;只能用DataRow.Delete()方法加 AcceptChanges()方法
MSDN对DataRow.Delete 方法的解释:如果行的 RowState 是“Added”,则该行将从表中移除。在使用 Delete 方法后,RowState 变成“Deleted”。在您调用 AcceptChanges 之前,它一直保持“已删除”。可通过调用 RejectChanges 取消删除行。
用Delete(),DataSet的HasChanges()=true;
用Remove(),DataSet的HasChanges()=false;

 

转载于:https://www.cnblogs.com/XUANLIU2016/p/5720349.html

你可能感兴趣的文章
解决 No Entity Framework provider found for the ADO.NET provider
查看>>
SVN服务器搭建和使用(三)(转载)
查看>>
Android 自定义View (三) 圆环交替 等待效果
查看>>
设置虚拟机虚拟机中fedora上网配置-bridge连接方式(图解)
查看>>
HEVC播放器出炉,迅雷看看支持H.265
查看>>
[置顶] Android仿人人客户端(v5.7.1)——人人授权访问界面
查看>>
Eclipse 调试的时候Tomcat报错启动不了
查看>>
【安卓5】高级控件——拖动条SeekBar
查看>>
ES6内置方法find 和 filter的区别在哪
查看>>
Android入门之文件系统操作(二)文件操作相关指令
查看>>
Android实现 ScrollView + ListView无滚动条滚动
查看>>
Swift 中的指针使用
查看>>
Swift - 使用闭包筛选过滤数据元素
查看>>
alue of type java.lang.String cannot be converted to JSONObject
查看>>
搜索引擎选择: Elasticsearch与Solr
查看>>
JAVA设计模式之简单工厂模式与工厂方法模式
查看>>
③面向对象程序设计——封装
查看>>
【19】AngularJS 应用
查看>>
Spring
查看>>
Linux 系统的/var目录
查看>>