输入字段更改后的小窗口数据表过滤

Wicket datatable filtering after input field change

本文关键字:窗口 数据表 过滤 字段 输入      更新时间:2023-09-26

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

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

然而,我更喜欢另一种方法。如果用户不必单击按钮来匹配结果,而是在向搜索字段插入或删除每个字符后更新表(立即过滤,而不是在按下按钮之后),那就更好了。此外,与搜索词匹配的记录部分应该加下划线或使用不同的字体颜色。

我知道这样的东西是可能的Javascript,但我不知道如何将Javascript附加到一个数据表。我怎样才能做到这一点呢?或者是否有更好/替代的方法来实现我的愿望?

任何帮助都将非常感激!

您可以使用AjaxFormComponentUpdatingBehavior向表单组件添加ajax行为。ajax的调用依赖于构造函数中指定的js事件,在本例中为"onkeyup"。然后,您的目标组件,你什么ajax重新渲染,为wicket 4,5 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); 
   }
}); 

您可能还需要节流,希望这有助于!