示例中,右边的表要跟左边的表建立关联。
在使用过程中,可能想只查看跟左边行关联的行;或者还没有建立任何关联的行;或者所有行
当切换左边行时,只有在过滤条件=“全部”时,才可以多选做关联操作。
当过滤条件是“指定关联”或者“未关联”时,如果多选行勾选或取消勾选,就会出现错误的关联结果。
没看懂1楼表达的意思。请说明一下,按什么逻辑进行关联?
然后举例说明一下,比如按什么步骤操作,正确结果是什么,错误结果是什么?
比如说打开窗口以后,左边显示TbSP表,右边显示TbGD表
选中左表的一行,勾选右表的多行时,右表的SPID=左表行的ID;取消勾选时,右表的SPID=nothing
这个在选中上面所有时,操作都没有问题
但如果单选第一项过滤条件时,右边会过滤显示SPID=左表选中行.ID的数据。
这时候,如果多选右表的行,然后取消勾选,会把一些未选中行的SPID也会赋值nothing
同样的,如果单选第二项过滤条件时,右边会过滤显示SPID=空的数据。
这时候,如果多选右表的行,然后勾选上,会把一些没选中行的SPID赋值
比如选择了未关联(也就是窗口中的上面的第二个radiobutton)
然后选中了第3-10行,然后打勾(这时候,正常情况下会把第3-10行的SPID赋值=左表行(“ID”),实际上不是。
既然做了筛选,就应该遍历筛选后的table呀,不应该去遍历datatable,datatable是所有数据,不受筛选影响的
Dim t1 As Table = e.Form.Controls("Table1").Table
Dim r As Row = t1.Current
If r IsNot Nothing Then
For i As Integer = e.Table.BottomPosition To e.Table.TopPosition Step - 1
e.Table.Rows(i)("Temp") = e.Row.Checked
Next
For Each dr As Row In e.Table.Rows
If dr("Temp") = True Then
dr("SPID") = r("ID")
End If
Next
End If
结果还是不对哟。
[此贴子已经被作者于2023/9/4 20:05:40编辑过]
自己检查所有代码,凡是需要遍历筛选后的表格的地方都按5楼的方法自行改正,不要遍历datatable