Foxtable(狐表)用户栏目专家坐堂 → [分享]我好像发现了DataRowState.Deleted的使用场景


  共有2421人关注过本帖树形打印复制链接

主题:[分享]我好像发现了DataRowState.Deleted的使用场景

帅哥哟,离线,有人找我吗?
chen3728060
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:388 积分:5098 威望:0 精华:0 注册:2013/11/2 0:01:00
[分享]我好像发现了DataRowState.Deleted的使用场景  发帖心情 Post By:2016/9/7 20:22:00 [显示全部帖子]

我想做一件这样的事情,在我的商品列表,点击每行商品,对应自动用sqlGroupTableBuilder的方法,在窗口里一个 SQLQuery表里加载对应的库存流水。说白了就是方便我看库存 

 

于是我在CurrentChanged事件里写:

 

If Forms("商品列表").opened Then
   
    If e.Table.rows.count = 1 AndAlso e.Table.Current IsNot Nothing AndAlso e.Table.Current.DataRow.RowState = 4 Then '用这个来避免删除最后一行时引发的Load报错,大红袍老师说的
       
        Return
    Else
        If e.Table.Current IsNot Nothing  Then
            Dim r As Row = e.Table.Current
           
            Dim g As New SQLGroupTableBuilder("LSStore", "LSStoreFlow")
            ...      一大堆SQLGroupTableBuilder代码,其中有个代码是g.filter =,要用到  r("商品ID")
            ...
        End If
    End If
End If

 

当我的商品列表里只剩下普通状态的商品(也就是行编号是蓝色的。补充知识:已修改未保存为橙色,刚新建未保存为红色)

我删除排第1个的那个商品时,都会报错,不能从已经删除的行里面引用数据。(删除非第一行的商品则不会有问题)


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

 

 

于是我把代码改为

If Forms("商品列表").opened Then
   
    If e.Table.rows.count = 1 AndAlso e.Table.Current IsNot Nothing AndAlso e.Table.Current.DataRow.RowState = 4 Then '用这个来避免删除最后一行时引发的Load报错,大红袍老师说的
       
        Return
    Else
        If e.Table.Current IsNot Nothing  Then
            Dim r As Row = e.Table.Current

                 If r.DataRow.RowState <> DataRowState.Deleted Then

            
                       Dim g As New SQLGroupTableBuilder("LSStore", "LSStoreFlow")
                       ...      一大堆SQLGroupTableBuilder代码,其中有个代码是g.filter =,要用到  r("商品ID")
                       ...

                 End If
        End If
    End If
End If

 

然后就没问题了!我记得之前一直有人问  DataRowState.Deleted怎么用,我估计就是我这场景下可以用。

还有我想问下,除了用这个DataRowState.Deleted避免报错,有更高明的设计方法吗?实现我想要的点击商品自动加载对应库存帐


 回到顶部