Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 输入字段更改后的Wicket数据表过滤_Java_Javascript_Filter_Datatable_Wicket - Fatal编程技术网

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

Java 输入字段更改后的Wicket数据表过滤,java,javascript,filter,datatable,wicket,Java,Javascript,Filter,Datatable,Wicket,在Wicket应用程序中,我得到了一个DefaultDataTable,它有一个SortableDataProvider的扩展和一个clickable列(AbstractColumn的扩展) datatable附带一个搜索字段和按钮,因此用户可以筛选表(比较搜索词和表内容) 然而,我更喜欢另一种方法。如果用户不必单击某个按钮来匹配结果,但在搜索字段中插入或删除每个字符后,表将更新(立即过滤,而不是在按下按钮后)。此外,与搜索词匹配的记录部分应加下划线或采用不同的字体颜色 我知道Javascrip

在Wicket应用程序中,我得到了一个DefaultDataTable,它有一个SortableDataProvider的扩展和一个clickable列(AbstractColumn的扩展)

datatable附带一个搜索字段和按钮,因此用户可以筛选表(比较搜索词和表内容)

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

我知道Javascript可以实现类似的功能,但我不知道如何将Javascript附加到数据表。我怎样才能做到这一点?还是有更好的/替代的方法来实现我的愿望


任何帮助都将不胜感激

您可以使用
ajaxformcomponentupdatebehavior
将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); 
   }
}); 

你可能也想要,希望这有帮助

您可以使用
ajaxformcomponentupdatebehavior
将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); 
   }
}); 

你可能也想要,希望这有帮助

这个更新很有魅力,非常感谢。现在,我只需要更改一些有关过滤元素的内容。你知道怎么做吗?除了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()
方法。