对数据视图的字符串分配意外删除了数据行

时间:2013-10-24 22:42:29

标签: vb.net

我很难解决VB在简单字符串赋值时删除一行数据的问题。处理循环如下。如果dvData数据视图有3行(即dvData.Count为3),则下面的字符串赋值会导致数据视图丢失一行(即,在执行字符串赋值后dvData.Count是2)。更奇怪的是,同一个字符串赋值调用在同一个脚本中多次使用而不会导致数据行丢失。

For Each oneShipment As Shipment In DelShipmentsList
    For intRow = 0 To (dvData.Count - 1)

        ' Example: if dvData.Count is 3 at this point, then....
        dvData(intRow)("Result") = "     Receipt Transaction Accepted."
        ' ... now dvData.Count will be 2!

    Next
Next

2 个答案:

答案 0 :(得分:1)

尝试检查该DataView对象的RowFilter属性。如果它是这样的,它将解释这个问题:

dvData.RowFilter = "Result NOT LIKE '*Accepted*'"

答案 1 :(得分:0)

看起来我们找到了答案,虽然完全无法预料,值得大打折扣。为了确定明确地传递整数和字符串,我在适当的时候让他们使用了CStr()和CInt()。这是我们发现的:

' This string causes the dataview to change error
dvData(CInt(intRow))(CStr("Result")) = CStr("Receipt Transaction Accepted")

'This string does not.
dvData(CInt(intRow))(CStr("Result")) = CStr("Receipt Transaction Successful")

显然有一些关于“接受”这个词的内容。我们花了很长时间尝试不同的字符串来弄清楚为什么Specified字符串会导致奇怪的行为,否则仍然无法解释。