以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]多选行的操作问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=188127)

--  作者:chnfo
--  发布时间:2023/9/3 22:39:00
--  [求助]多选行的操作问题
示例中,右边的表要跟左边的表建立关联。
在使用过程中,可能想只查看跟左边行关联的行;或者还没有建立任何关联的行;或者所有行

当切换左边行时,只有在过滤条件=“全部”时,才可以多选做关联操作。
当过滤条件是“指定关联”或者“未关联”时,如果多选行勾选或取消勾选,就会出现错误的关联结果。

如何解决这个问题?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多选行.rar


--  作者:有点蓝
--  发布时间:2023/9/3 22:54:00
--  
没看懂1楼表达的意思。请说明一下,按什么逻辑进行关联?

然后举例说明一下,比如按什么步骤操作,正确结果是什么,错误结果是什么?

--  作者:chnfo
--  发布时间:2023/9/4 17:12:00
--  
比如说打开窗口以后,左边显示TbSP表,右边显示TbGD表

选中左表的一行,勾选右表的多行时,右表的SPID=左表行的ID;取消勾选时,右表的SPID=nothing
这个在选中上面所有时,操作都没有问题

但如果单选第一项过滤条件时,右边会过滤显示SPID=左表选中行.ID的数据。
这时候,如果多选右表的行,然后取消勾选,会把一些未选中行的SPID也会赋值nothing

同样的,如果单选第二项过滤条件时,右边会过滤显示SPID=空的数据。
这时候,如果多选右表的行,然后勾选上,会把一些没选中行的SPID赋值



--  作者:chnfo
--  发布时间:2023/9/4 17:13:00
--  
比如选择了未关联(也就是窗口中的上面的第二个radiobutton)

然后选中了第3-10行,然后打勾(这时候,正常情况下会把第3-10行的SPID赋值=左表行(“ID”),实际上不是。

--  作者:有点蓝
--  发布时间:2023/9/4 17:41:00
--  
既然做了筛选,就应该遍历筛选后的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

--  作者:chnfo
--  发布时间:2023/9/4 20:03:00
--  
结果还是不对哟。


[此贴子已经被作者于2023/9/4 20:05:40编辑过]

--  作者:chnfo
--  发布时间:2023/9/4 20:06:00
--  
附件传不上去?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:还是不对.rar



--  作者:有点蓝
--  发布时间:2023/9/4 20:09:00
--  
自己检查所有代码,凡是需要遍历筛选后的表格的地方都按5楼的方法自行改正,不要遍历datatable
--  作者:chnfo
--  发布时间:2023/9/4 21:23:00
--  
按要求全改了,还是不对啊
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:0904还是不对.rar



--  作者:有点蓝
--  发布时间:2023/9/4 21:26:00
--  
什么地方不对?