我想做一件这样的事情,在我的商品列表,点击每行商品,对应自动用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避免报错,有更高明的设计方法吗?实现我想要的点击商品自动加载对应库存帐