GWT中的即时表过滤

时间:2013-03-06 12:33:50

标签: gwt flextable

我想做一种表(可能是FlexTable)并能够应用过滤器(任何字符串)并立即删除不包含该字符串的行。我检查了类似的问题,但它们已经很老了(3 - 4年前)。

您可以在jquery的数据表插件中看到一个示例:http://www.datatables.net/

我只需要过滤器,所以我想我可以使用TextBox和KeyPressHandler来检测按下的键,并且只显示input.length()> = 3时包含输入文本的行。

任何人都有更好的想法或方法吗?

感谢。

1 个答案:

答案 0 :(得分:3)

我强烈建议您使用CellTableDataGrid。通过这些,您可以关联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时,您必须单独检查每一行和单元格。操作太多了。