Foxtable(狐表)用户栏目专家坐堂 → [多次选择] Filter时保持Checked 的行不变


  共有3994人关注过本帖树形打印复制链接

主题:[多次选择] Filter时保持Checked 的行不变

帅哥哟,离线,有人找我吗?
ncefans
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:94 积分:800 威望:0 精华:0 注册:2013/2/11 18:26:00
[多次选择] Filter时保持Checked 的行不变  发帖心情 Post By:2014/7/11 20:09:00 [只看该作者]

已上一个演示文件.

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:demo.table


文本框用于搜索第三列,但是我需要多次选择.
比如,第一次文本框在输入"333"搜索后, 我选择了其中两行数据. 一行为"333",一行为"3336".

这时候,我需要再次在文本框中输入其它文本,比如"555",进行搜索. 我希望刚才选中的两行数据还是显示在当前表中,而且还保持Checked的状态,最好这两行还排在最上面.

这个有办法实现吗? Filter条件中可否用Row的Checked属性呢? 谢谢! 


图片点击可在新窗口打开查看此主题相关图片如下:demo.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2014-7-12 17:09:10编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:94 积分:800 威望:0 精华:0 注册:2013/2/11 18:26:00
  发帖心情 Post By:2014/7/12 16:32:00 [只看该作者]

以下是引用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

谢谢,但是这样不行的哦. 不能用Filter条件叠加的方式. 因为第一次Filter之后只选择了其中一部份而已.

唯一的判断方式是行是否Checked.
[此贴子已经被作者于2014-7-12 16:32:13编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/7/12 16:36:00 [只看该作者]

你具体是什么情况,上个例子看看

 回到顶部
帅哥哟,离线,有人找我吗?
y2287958
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4760 积分:34608 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2014/7/12 16:36:00 [只看该作者]

楼主的表述令人郁闷不已

 回到顶部
帅哥哟,离线,有人找我吗?
ncefans
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:94 积分:800 威望:0 精华:0 注册:2013/2/11 18:26:00
  发帖心情 Post By:2014/7/12 17:06:00 [只看该作者]

已上演示文件,谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
y2287958
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4760 积分:34608 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:94 积分:800 威望:0 精华:0 注册:2013/2/11 18:26:00
  发帖心情 Post By:2014/7/13 10:57:00 [只看该作者]

非常感谢,很好的解决方法!

 回到顶部