C#中的DataTable怎么获取已删除行的信息

C#中的DataTable怎么获取已删除行的信息,第1张

C#的DataTable的行有几种状态:

Added:表示行已添加到DataRowCollection,尚未调用DataTable.AcceptChange()

Modified:表示行已被修改,尚未调用DataTable.AcceptChange()

Deleted:表示行已被删除,

Unchanged:自上次调用AcceptChange()之后没有更改的行.

Detached:行虽然创建,但没有放到DataRowCollection中.

有时候,要获取到客户端表格的删除行,然后再提交到数据库更新.但是如果直接这样访问:

DataTable dtDeleted = dt.GetChanges(DataRowState.Deleted)

string id=dtDeleted.Rows[0]["id"].ToString()

会出现DeletedRowInaccessibleException异常:不能通过已删除的行访问该行的信息.

怎么办呢?其实可以Rows的另一个重载索引器来访问:

string id=dtDeleted.Rows[0]["id",DataRowVersion.Original].ToString()

DataRowVersion.Original表示的是该行的原始值

1 找个别的机器安装个同版本的mysql或从已安装同版本的其他机器上(非同版本的也可以试下):

拷贝 mysql/data/mysql 目录到你的mysql/data/ 下吧

2 试着启动mysql服务,如果能启动了,理论上应该丢失的只有用户、授权等一些系统信息,不影响你的使用的数据;

如果不能启动,看错误日志,争取启动了。

3 赶紧把数据备份一份出来,重新把所有库(只是你后来创建的业务相关的库,不包括mysql库)都删了,重新导入一遍。理论上不这样也可以,但只是非生产重要的环境下。

4 重新做用户授权。

1、我们可以在窗体页面上添加ContextMenuStrip快捷菜单。

2、然后我们就能就能在删除行这个子项中编写删除事件代码。

3、此时我们我们就能调用DataGridView的Rows属性

4、然后引用rowIndex属性即可获得行下标。

5、此时我们就能通过获取到Rows行下标的IsNewRow属性判断是否被选中。

6、如果被选中了,我们就能利用DataGridView对象的事件e的rowIndex属性删除。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6425651.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-22
下一篇 2023-03-22

发表评论

登录后才能评论

评论列表(0条)

保存