我一直在搜索SO和文档,但没有成功。
是否已经实施了某种过滤GWT(2.3)CellTable的机制?通过过滤我的意思是“仅显示那些通过这种情况的数据”。
答案 0 :(得分:3)
Google Guava library R09具有静态Collection2.filter(..)
方法。该库也已扩展到GWT应用程序中。要在将Collection<MyType>
的实例提供给您的CellTable之前对其进行过滤,您可以编写类似于:
List<MyType> filteredList =
new ArrayList<MyType>(Collections2.filter(unfilteredList,
new Predicate<MyType>() {
@Override
public boolean apply(MyType listItem) {
return (filterCondition) ? true : false;
}
}));
现在可以将filteredList
提供给您的CellTable:
myCellTable.setRowCount(filteredList.size(), true);
myCellTable.setRowData(0, filteredList);
要使用该库,需要将guava-r09.jar
和guava-r09-gwt.jar
添加到GWT项目的类路径中。
答案 1 :(得分:0)
我通过实现AsyncDataProvider实现了过滤,该AsyncDataProvider使用从当前应用程序位置获取的查询字符串来查询服务器。 AsyncDataProvider自动更新表 - 您告诉AsyncDataProvider通过以下方式更新表:
addDataDisplay(final HasData<T> display)
如果您不熟悉活动和地点,请查看: http://code.google.com/webtoolkit/doc/latest/DevGuideMvpActivitiesAndPlaces.html
例如,我的历史记录代码如下:
EntityPlace:Source/q:sourceType_eq=report.
AsyncDataProvider使用从历史记录中获取的Place来查询服务器。
HTH。