玉祥平台客服-15087858732

标题: 网格部件调用DeleteFocusedRow()删除方法后循环DataTable报错的解决方法 [打印本页]

作者: 万望    时间: 2020-3-8 11:16

作者: 张兴康    时间: 2020-3-8 11:49


作者: 刘亚东    时间: 2020-3-8 14:46
又来了,看看,这是个好东西哦
作者: 张军勇    时间: 2020-7-28 08:59
    // 摘要:
    //     获取 System.Data.DataRow 对象的状态。
    [Flags]
    public enum DataRowState
    {
        // 摘要:
        //     该行已被创建,但不属于任何 System.Data.DataRowCollection。System.Data.DataRow 在以下情况下立即处于此状态:创建之后添加到集合中之前;或从集合中移除之后。
        Detached = 1,
        //
        // 摘要:
        //     该行自上次调用 System.Data.DataRow.AcceptChanges() 以来尚未更改。
       Unchanged = 2,
        //
        // 摘要:
        //     该行已添加到 System.Data.DataRowCollection 中,System.Data.DataRow.AcceptChanges()
        //     尚未调用。
       Added = 4,
        //
        // 摘要:
        //     该行已通过 System.Data.DataRow 的 System.Data.DataRow.Delete() 方法被删除。
        Deleted = 8,
        //
        // 摘要:
        //     该行已被修改,System.Data.DataRow.AcceptChanges() 尚未调用。
        Modified = 16,
    }
作者: 张军勇    时间: 2020-7-28 09:01
这个需要在VS中查看哈。几种状态和相应的值,我们在平台脚本对比时,需要用数值来比较。
作者: 王爱东    时间: 2020-7-28 09:41
那以后可以用不同的值来判断状态了。
作者: 万望    时间: 2020-7-28 16:02
标题: 网格部件调用DeleteFocusedRow()删除方法后循环DataTable报错的解决方法
本帖最后由 万望 于 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属性可以判断当前访问行是否被标记为删除。

作者: 万望    时间: 2020-7-28 16:08

作者: 王爱东    时间: 2020-7-28 16:32
dr.RowState  还有那些值呢,分别代表什么?可以写全一些。
作者: 刘亚东    时间: 2020-7-28 16:37
哈哈,可以,很多人都不知道是什么原因造成的,其实就是判断一下行的状态是不是被删除了就行了
作者: 陈晓龙    时间: 2020-7-28 18:13

作者: 万望    时间: 2020-7-28 21:35





欢迎光临 玉祥平台客服-15087858732 (http://bbs.delit.cn/) Powered by Discuz! X3.2