我想做一种表(可能是FlexTable)并能够应用过滤器(任何字符串)并立即删除不包含该字符串的行。我检查了类似的问题,但它们已经很老了(3 - 4年前)。
您可以在jquery的数据表插件中看到一个示例:http://www.datatables.net/
我只需要过滤器,所以我想我可以使用TextBox和KeyPressHandler来检测按下的键,并且只显示input.length()> = 3时包含输入文本的行。
任何人都有更好的想法或方法吗?
感谢。
答案 0 :(得分:3)
我强烈建议您使用CellTable
或DataGrid
。通过这些,您可以关联ListDataProvider
,您可以将所有逻辑用于过滤。
如果您想要更复杂的过滤,则应创建自己的DataListProvider
实施,并传入String
或自定义Filter
。你需要创建
filter(String filterExpression)
,只要您想过滤行,就可以从表中调用它。
public class MyListDataProvider<T> extends DataListProvider<T>{
public void filter(String filterExpression){
// Here you filter your local list containing the data use
List<T> list = getList();
...
// Refresh all of the objects associated to this ListDataProvider
refresh();
}
}
您可以保留一个包含所有项目的额外List<T>
而不进行任何过滤,以便您可以在“未过滤”或更改过滤器表达式时访问已过滤的项目。
此方法比使用FlexTable
效率更高,因为使用FlexTable
时,您必须单独检查每一行和单元格。操作太多了。