输入字段更改后的Wicket数据表过滤

时间:2013-04-17 14:27:47

标签: java javascript filter datatable wicket

在Wicket应用程序中,我有一个带有SortableDataProvider扩展名的DefaultDataTable和一个可点击的列(AbstractColumn的扩展名)。

数据表附带一个搜索字段和按钮,因此用户可以过滤表格(比较搜索词和表格内容)。

但是,我更喜欢不同的方法。如果用户不必单击按钮来匹配结果会更好,但是在搜索字段中插入或删除每个字符后表格会更新(立即过滤,而不是按下按钮后)。此外,与搜索词匹配的记录部分应加下划线或接收不同的字体颜色。

我知道使用Javascript可以做到这一点,但我不知道如何将Javascript附加到数据表。我怎么能做到这一点?或者有更好的/替代的方式来实现我的愿望吗?

任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:3)

您可以使用AjaxFormComponentUpdatingBehavior添加ajax行为以形成组件。调用ajax依赖于构造函数中指定的js事件,在本例中为“onkeyup”。然后,您可以将组件定位为ajax重新渲染的组件,对于wicket 4,target.addComponent(datatable);为wicket 6x target.add(datatable);。但请注意,数据表将其OutputMarkupId设置为true target.addComponent(datatable);,这是wicket ajax所针对的任何组件所必需的。

datatable.setOutputMarkupId(true); 

field.add(new AjaxFormComponentUpdatingBehavior("onkeyup") { 
   @Override 
   protected void onUpdate(AjaxRequestTarget target) { 
           target.addComponent(datatable); 
   }
}); 

您可能还需要throttling,希望这会有所帮助!