以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助:已经实现当行选中,反选其他行,但是多行选中时候,反选其他行就不能进行,只能空出当前行,要求空出所选择的多行!  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=68901)

--  作者:李孝春
--  发布时间:2015/5/27 10:33:00
--  求助:已经实现当行选中,反选其他行,但是多行选中时候,反选其他行就不能进行,只能空出当前行,要求空出所选择的多行!

新建一保密技术防护专用系统安装登记表,并使用了复选框,

 

一按钮反选,代码如下:

For Each r As Row In Tables("保密技术防护专用系统安装登记表").GetCheckedRows
    If r("编号") <>"" Then
        r.Checked = False
        For Each r1 As Row In Tables("保密技术防护专用系统安装登记表").Rows
            If r1("编号") <>"" Then
                Dim A As Row=Tables("保密技术防护专用系统安装登记表").Current
                If r1("_Identify") <> a("_Identify") Then \'如果不是本行
                    r1.Checked = True
                End If
            End If
        Next
    End If
Next

可以实现当前行是选中的情况下 反选其他所有行,但是却不能实现多行选中情况下,反选其他所有行,求纠正!

 

一按钮全选,代码如下:

For Each r As Row In Tables("保密技术防护专用系统安装登记表").Rows
    If r("编号") <>"" Then
        r.Checked = True
    End If
Next


--  作者:大红袍
--  发布时间:2015/5/27 10:38:00
--  

 楼主,你怎么没有一点进步?思路很清晰啊。

 

 循环所有的行,r.Checked = Not r.Checked


--  作者:李孝春
--  发布时间:2015/5/27 11:12:00
--  回复:(大红袍) 楼主,你怎么没有一点进步?思...

不好意思 之前没有操作类似经验 所以才学

For Each r1 As Row In Tables("保密技术防护专用系统安装登记表").Rows
    If r1("编号") <>"" Then
        If r1.Checked = Not r1.Checked  Then
            r1.Checked = True
        Else          
            r1.Checked = False
        End If
    Else
        r1.Checked = True
    End If
Next

代码如上 效果是能够清除所选择的多行了 但是没有反选所选择的行之外的其他所有行

 


--  作者:大红袍
--  发布时间:2015/5/27 11:15:00
--  
For Each r1 As Row In Tables("保密技术防护专用系统安装登记表").Rows
    If r1("编号") <> "" Then
         r1.Checked = Not r1.Checked
    Else
        r1.Checked = True
    End If
Next