本帖最后由 万望 于 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属性可以判断当前访问行是否被标记为删除。 |