0

我想为我的 DataTable 创建一个自定义过滤器。我想创建一个按钮,单击它时会更改表格的数据。我知道 wicket 必须提供的 ChoiceFilteredPropertyColumn,但根据我对它的理解,这是一个下拉过滤器。

我正在尝试实现类似下图的效果(Pancakes 是可点击的按钮): 示例数据表可点击按钮

有人能指出我正确的方向吗?

4

3 回答 3

1

嗯... ChoiceFilteredPropertyColumn的超类是FilteredPropertyColumn可能会起作用。否则,您始终可以按照您喜欢的方式实现您自己的实现IFilteredColumn的列。

于 2013-07-17T08:22:50.620 回答
1

看看这里是如何实现“DataTable”的:http: //www.packtpub.com/sites/default/files/1605OS-Chapter-5-Displaying-Data-Using-DataTable.pdf

然后你可以像你想要的那样实现你的下拉按钮过滤器,并使用选定的值进行过滤DataTable

于 2013-07-17T12:24:34.800 回答
0

我通过创建一个自定义过滤器(只是一个带有一些标记的面板)解决了这个问题,并在自定义 FilteredPropertyColumn 的 getFilter 方法中返回它。

FilteredPropertyColumn: http ://wicket.apache.org/apidocs/1.4/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilteredPropertyColumn.html

getFilter 方法: http ://wicket.apache.org/apidocs/1.4/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/IFilteredColumn.html#getFilter%28java.lang.String,% 20org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterForm%29

按钮过滤器类:

public class ButtonFilter extends Panel {
     ...
}

在自定义 FilteredPropertyColumn 类中:

@Override
public Component getFilter(String componentId, FilterForm<?> form) {
    return new ButtonFilter<Y>(componentId, getFilterModel(form), filterChoices);
}
于 2013-07-30T08:20:56.347 回答