gpt4 book ai didi

java - GXT 3.0 网格小部件搜索

转载 作者:行者123 更新时间:2023-12-01 12:05:50 25 4
gpt4 key购买 nike

我正在使用 com.sencha.gxt(3.0) 网格小部件。我正在尝试编写一个 Java 函数,该函数在一行中(跨所有列)搜索字符串,并且仅显示包含该字符串的行。是否有内置的或简单的方法可以做到这一点?

谢谢

最佳答案

没有。

(我很确定您实际上并不是想写一个“是或否”问题...)

<小时/>

简而言之,GXT 假设网格中的所有数据都是字符串或类字符串,或者仅以字符串方式进行比较才有意义,这是愚蠢的。另外,您可能在本地拥有所有数据,因此在客户端上进行简单的过滤是有意义的,或者您可能真的会说“请在服务器/数据库上搜索所有一千万行,并且只发回匹配的行”在客户端上渲染。

<小时/>

客户端过滤

Store (可能是 ListStore 对于网格,或者 TreeStore 对于树网格,但你的问题没有指定)有一个内置的本地过滤方法 - 你给它一个函数,它接受一个项目(和一些其他可能相关的数据),并返回 true/false 指示是否应该对用户隐藏该项目。可以应用多个过滤器,如果任何过滤器表明该项目被隐藏,那么它就会消失。换句话说,这可以被认为是一条sql where子句,其中所有语句都用 and 连接- 如果你愿意or ,您可以实现一个过滤器来检查是否有任何单个过滤器希望该项目可见。

此过滤机制对整个行项目进行操作,即 TStore<T> 。它不知道列是什么,因为您可以通过多种方式使用存储 - 组合框中的项目、图表上的点等。它允许您构建自己的工具来执行过滤。如果您的数据以一种易于了解所有可能的列的方式进行概括,那么您可以轻松地在这些列上编写一个循环来检查其中任何一个是否包含该字符串,在这种情况下返回 false 以便该项目是可见的。或者,因为您已经构建了 ColumnModel充满ColumnConfig s,每个都有一个 ValueProvider并且您知道将每个值与 .toString().contains(queryText) 进行比较是有意义的,您可以通过这种方式迭代列。

<小时/>

服务器端过滤

在这种情况下,我们对客户端所发生的情况几乎没有控制权,因为您很可能将该工作转移到后端数据库。我们仍然知道列模型中的列列表,但我们要么发送与该文本匹配的单元格的查询,要么发送针对整行的单个查询。不管怎样,我们修改正在使用的分页加载配置对象,并发送一个新的查询来获取我们想要的数据,而执行过滤的实际工作是服务器的工作。从你的问题来看,这似乎不是你想要的,但如果没有更多细节,很难确定。

关于java - GXT 3.0 网格小部件搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27609167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com