度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 10992|回复: 11
打印 上一主题 下一主题

[分享] 网格部件调用DeleteFocusedRow()删除方法后循环DataTable报错的解决方法

  [复制链接]

348

主题

3572

帖子

9731

积分

论坛元老

Rank: 8Rank: 8

积分
9731
楼主
 楼主| 发表于 2020-3-8 11:16:37 | 显示全部楼层
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复

使用道具 举报

348

主题

3572

帖子

9731

积分

论坛元老

Rank: 8Rank: 8

积分
9731
本帖最后由 万望 于 2015-9-28 16:07 编辑

错误事例:
代码脚本:
For each dr in 网格部件1.DataTable.Rows
  
If isnull(dr["数量"]) then
  
ShowInformation("数量不能为空")
  
end
  
end if
  
next
  

如上图所示这样的循环判断,如果在对网格部件1的数据进行过删除操作,也就是调用过:网格部件.DeleteFocusedRow()这样的方法,那么就会引发错误提示:不能通过已删除的上不能访问改行的信息。
分析原因:
删除时调用了DeleteFocusedRow()方法,数据已被标记成Deleted(Deleted=8)。
该行已通过 System.Data.DataRow 的 System.Data.DataRow.Delete() 方法被删除。
Deleted =8

解决办法:
循环里添加判断,判断该行是否被删除,在进行访问该行的数据:
For eachdr in网格部件1.DataTable.Rows
if dr.RowState<>8 then
if isnull(dr["人员ID"]) then
ShowInformation("请选择所有关系类型的关系人,不需要的可以右键删除。")
end
end if
end if
next

说明:判断dr的RowState属性可以判断当前访问行是否被标记为删除。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复

使用道具 举报

348

主题

3572

帖子

9731

积分

论坛元老

Rank: 8Rank: 8

积分
9731
板凳
 楼主| 发表于 2020-7-28 16:08:18 | 显示全部楼层
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复

使用道具 举报

348

主题

3572

帖子

9731

积分

论坛元老

Rank: 8Rank: 8

积分
9731
地板
 楼主| 发表于 2020-7-28 21:35:01 | 显示全部楼层
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|玉祥公司客服-玉祥集团客服  本站关键词:快速开发平台

GMT+8, 2024-5-7 18:04 , Processed in 0.127187 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表