Java 输入字段更改后的Wicket数据表过滤
在Wicket应用程序中,我得到了一个DefaultDataTable,它有一个SortableDataProvider的扩展和一个clickable列(AbstractColumn的扩展) datatable附带一个搜索字段和按钮,因此用户可以筛选表(比较搜索词和表内容) 然而,我更喜欢另一种方法。如果用户不必单击某个按钮来匹配结果,但在搜索字段中插入或删除每个字符后,表将更新(立即过滤,而不是在按下按钮后)。此外,与搜索词匹配的记录部分应加下划线或采用不同的字体颜色 我知道Javascript可以实现类似的功能,但我不知道如何将Javascript附加到数据表。我怎样才能做到这一点?还是有更好的/替代的方法来实现我的愿望Java 输入字段更改后的Wicket数据表过滤,java,javascript,filter,datatable,wicket,Java,Javascript,Filter,Datatable,Wicket,在Wicket应用程序中,我得到了一个DefaultDataTable,它有一个SortableDataProvider的扩展和一个clickable列(AbstractColumn的扩展) datatable附带一个搜索字段和按钮,因此用户可以筛选表(比较搜索词和表内容) 然而,我更喜欢另一种方法。如果用户不必单击某个按钮来匹配结果,但在搜索字段中插入或删除每个字符后,表将更新(立即过滤,而不是在按下按钮后)。此外,与搜索词匹配的记录部分应加下划线或采用不同的字体颜色 我知道Javascrip
任何帮助都将不胜感激 您可以使用
ajaxformcomponentupdatebehavior
将ajax行为添加到表单组件中。ajax的调用依赖于构造函数中指定的js事件,在本例中为“onkeyup”。然后针对ajax要重新呈现的组件,对于wicket 4,5target.addComponent(datatable)代码>用于wicket 6xtarget.add(数据表)代码>。但是请注意,datatable将其OutputMarkupId设置为truetarget.addComponent(datatable)代码>,这是wicket ajax针对的任何组件所必需的
datatable.setOutputMarkupId(true);
field.add(new AjaxFormComponentUpdatingBehavior("onkeyup") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
target.addComponent(datatable);
}
});
你可能也想要,希望这有帮助 您可以使用ajaxformcomponentupdatebehavior
将ajax行为添加到表单组件中。ajax的调用依赖于构造函数中指定的js事件,在本例中为“onkeyup”。然后针对ajax要重新呈现的组件,对于wicket 4,5target.addComponent(datatable)代码>用于wicket 6xtarget.add(数据表)代码>。但是请注意,datatable将其OutputMarkupId设置为truetarget.addComponent(datatable)代码>,这是wicket ajax针对的任何组件所必需的
datatable.setOutputMarkupId(true);
field.add(new AjaxFormComponentUpdatingBehavior("onkeyup") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
target.addComponent(datatable);
}
});
你可能也想要,希望这有帮助 这个更新很有魅力,非常感谢。现在,我只需要更改一些有关过滤元素的内容。你知道怎么做吗?除了AjaxFormComponentUpdateingBehavior(“onkeyup”),我会使用OnChangeAjaxBehavior
,它还包括通过鼠标粘贴等等…@Robert ooo不知道OnChangeAjaxBehavior
,这看起来确实是最好的选择@Attiej您需要在过滤元素中更改什么?在过滤元素的文本中加下划线或更改颜色。例如:如果用户搜索字符串“ab”,那么字符串“abc”中的字符“a”en“b”应该加下划线(或其他css)@drobson thats wicket:你和一个类战斗了3天,却发现它有一个子类已经完成了你想要的任务。已经有这么多次了…更新效果很好,非常感谢。现在,我只需要更改一些有关过滤元素的内容。你知道怎么做吗?除了AjaxFormComponentUpdateingBehavior(“onkeyup”),我会使用OnChangeAjaxBehavior
,它还包括通过鼠标粘贴等等…@Robert ooo不知道OnChangeAjaxBehavior
,这看起来确实是最好的选择@Attiej您需要在过滤元素中更改什么?在过滤元素的文本中加下划线或更改颜色。例如:如果用户搜索字符串“ab”,那么字符串“abc”中的字符“a”en“b”应该加下划线(或其他css)@drobson thats wicket:你和一个类战斗了3天,却发现它有一个子类已经完成了你想要的任务。如果您想对数据表中显示的值执行某些操作,则需要覆盖newCellItem()
方法。如果您想对数据表中显示的值执行某些操作,则需要覆盖newCellItem()
方法。