在Wicket应用程序中,我有一个带有SortableDataProvider扩展名的DefaultDataTable和一个可点击的列(AbstractColumn的扩展名)。
数据表附带一个搜索字段和按钮,因此用户可以过滤表格(比较搜索词和表格内容)。
但是,我更喜欢不同的方法。如果用户不必单击按钮来匹配结果会更好,但是在搜索字段中插入或删除每个字符后表格会更新(立即过滤,而不是按下按钮后)。此外,与搜索词匹配的记录部分应加下划线或接收不同的字体颜色。
我知道使用Javascript可以做到这一点,但我不知道如何将Javascript附加到数据表。我怎么能做到这一点?或者有更好的/替代的方式来实现我的愿望吗?
任何帮助都会非常感激!
答案 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,希望这会有所帮助!