以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [多次选择] Filter时保持Checked 的行不变 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=53622) |
-- 作者:ncefans -- 发布时间:2014/7/11 20:09:00 -- [多次选择] Filter时保持Checked 的行不变 已上一个演示文件. 文本框用于搜索第三列,但是我需要多次选择. 比如,第一次文本框在输入"333"搜索后, 我选择了其中两行数据. 一行为"333",一行为"3336". 这时候,我需要再次在文本框中输入其它文本,比如"555",进行搜索. 我希望刚才选中的两行数据还是显示在当前表中,而且还保持Checked的状态,最好这两行还排在最上面. 这个有办法实现吗? Filter条件中可否用Row的Checked属性呢? 谢谢! [此贴子已经被作者于2014-7-12 17:09:10编辑过]
|
-- 作者:Bin -- 发布时间:2014/7/12 9:02:00 -- if tables(X).Filter > "" then tables(X).Filter=tables(X).Filter & " and [第三列] = \'" & TextBox1.Value & "\'" else tables(X).Filter="[第三列] = \'" & TextBox1.Value & "\'" end if |
-- 作者:ncefans -- 发布时间:2014/7/12 16:32:00 -- 以下是引用Bin在2014-7-12 9:02:00的发言:
谢谢,但是这样不行的哦. 不能用Filter条件叠加的方式. 因为第一次Filter之后只选择了其中一部份而已.if tables(X).Filter > "" then tables(X).Filter=tables(X).Filter & " and [第三列] = \'" & TextBox1.Value & "\'" else tables(X).Filter="[第三列] = \'" & TextBox1.Value & "\'" end if 唯一的判断方式是行是否Checked.
[此贴子已经被作者于2014-7-12 16:32:13编辑过]
|
-- 作者:Bin -- 发布时间:2014/7/12 16:36:00 -- 你具体是什么情况,上个例子看看 |
-- 作者:y2287958 -- 发布时间:2014/7/12 16:36:00 -- 楼主的表述令人郁闷不已 |
-- 作者:ncefans -- 发布时间:2014/7/12 17:06:00 -- 已上演示文件,谢谢! |
-- 作者:y2287958 -- 发布时间:2014/7/12 20:22:00 -- 试试这个代码: Dim s As String For Each r As Row In Tables("表A").GetCheckedRows s += "," & r("_Identify") Next If s>"" Tables("表A").Filter = "[_Identify] in (" & s.Remove(0,1) & ") or 第三列 like \'*" & e.Sender.Text & "*\'" For Each r As Row In Tables("表A").Rows For Each s1 As String In s.Remove(0,1).Split(",") If r("_Identify") = Val(s1) r.Checked = True End If Next Next Else Tables("表A").Filter = "第三列 like \'*" & e.Sender.Text & "*\'" End If |
-- 作者:ncefans -- 发布时间:2014/7/13 10:57:00 -- 非常感谢,很好的解决方法! |