GWT:如何在CellTable上实现过滤?

时间:2011-06-15 16:59:33

标签: java gwt

  

可能重复:
  GWT Table that supports dynamic filtering

我一直在搜索SO和文档,但没有成功。

是否已经实施了某种过滤GWT(2.3)CellTable的机制?通过过滤我的意思是“仅显示那些通过这种情况的数据”。

2 个答案:

答案 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.jarguava-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。