Wicket自定义过滤器没有下拉表

时间:2013-07-17 08:08:43

标签: button datatable wicket choicefield dropdownchoice

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

我正在努力实现类似下面的图片(Pancakes是可点击的按钮): example data table clickable button

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

3 个答案:

答案 0 :(得分:1)

嗯...... ChoiceFilteredPropertyColumn的超类是FilteredPropertyColumn,这可能就是诀窍。否则,您可以始终实现自己的列,以您喜欢的方式实现IFilteredColumn

答案 1 :(得分:1)

看看实现的`DataTable'在这里:http://www.packtpub.com/sites/default/files/1605OS-Chapter-5-Displaying-Data-Using-DataTable.pdf

然后,您可以按照自己的意愿实现下拉按钮过滤器,并使用所选值DataTable进行过滤。

答案 2 :(得分: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

ButtonFilter类:

public class ButtonFilter extends Panel {
     ...
}

在自定义FilteredPropertyColumn类中:

@Override
public Component getFilter(String componentId, FilterForm<?> form) {
    return new ButtonFilter<Y>(componentId, getFilterModel(form), filterChoices);
}