调用网格部件.DeleteFocusedRow()循环访问.DataTabel时报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调用网格部件.DeleteFocusedRow()循环访问.DataTabel时报错相关的知识,希望对你有一定的参考价值。

‘访问DataTable时提示:已删除行不能访问for each dr in 网格部件1.DataTable.Rows   
    if isnull(dr["ID"]) then
        ShowInformation("ID不能为空")
        end
    end if   
next  


如上图所示这样的循环判断,如果在对网格部件1的数据进行过删除操作,也就是调用过:网格部件.DeleteFocusedRow()这样的方法,那么会引发错误:已删除的上不能访问
解决办法,添加判断,判断该行是否被删除,在进行访问该行的数据:
for each dr in 任务关系人.DataTable.Rows
    if dr.RowState<>8  then
        if isnull(dr["人员ID"]) then
            ShowInformation("请选择所有关系类型的关系人,不需要的可以右键删除。")
            end
        end if
    end if
next  

判断dr的RowState属性可以判断。
RowState属性注解:

        //     该行已被创建,但不属于任何 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,  

原文地址:http://bbs.delit.cn/thread-654-1-1.html

转载请注明出处;

撰写人:度量科技http://www.delit.cn

以上是关于调用网格部件.DeleteFocusedRow()循环访问.DataTabel时报错的主要内容,如果未能解决你的问题,请参考以下文章

自定义小部件中的 dojo 数据网格未呈现

度量快速开发平台网格部件批量删除

从dijit内部调用父小部件函数复选框更改函数在dgrid内部lopcated

abaqus合并部件后应该对谁划分网格

网格部件中设置条件标识

Kivy中的动态网格,每个网格元素包含多个小部件