我使用的是primefaces 5.0和带过滤器选项的数据表。但输入一个字母是不方便的,等待它过滤和更新然后键入下一个字母。它也会降低服务器的速度。因此,在填充过滤器选项然后过滤后需要按回车键。
在primefaces 3.5中有filterDelay选项,但我在primefaces 5中没有看到。
我以前用javascript代码破解如下
$('th .ui-column-filter').each(function() {
var inp = $(this);
inp.unbind('keydown');
inp.unbind('keyup');
inp.unbind('keypress');
inp.keypress(function(event) {
if (event.keyCode == 13) {
alert("entered");
event.stopPropagation();
gwsReportAllPartListDataTable.filter();
return false;
}
});
});
嗯,它不起作用。
我怎样才能使用primefaces 5?
答案 0 :(得分:4)
根据PrimeFaces用户指南(5.0和5.1),仍然有选项filterEvent =“...”和filterDelay =“...”
名称: filterEvent ,默认值: keyup ,输入: String ,说明:调用输入过滤器过滤的事件。 名称: filterDelay ,默认值: 300 ,类型:整数,描述:发送ajax过滤器查询之前的延迟(以毫秒为单位)。
这两个选项都适用于 p:dataTable
标签我猜这两个中的一个应该可以解决你的问题。 (延迟选项,如果您愿意更改为列上的过滤器,或另一方面,仍然存在filterEvent选项)。
答案 1 :(得分:0)
在5.2 Userguide (Chapter 3.32)中, DataTable 中仍然存在 filterDelay 选项。它不适合你吗?
2011年4月7日,BalusC在他的博客“How to filter p:dataTable on enter event”中发布了一个非常类似的解决方案。也许你可以从中调整一些东西。
答案 2 :(得分:-3)
对于那里的2个以上有角度的用户,您可以做而不是做(使用https://www.primefaces.org/primeng/#/table/filter中的示例):
<input *ngSwitchCase="'vin'" pInputText type="text" (input)="dt.filter($event.target.value, col.field, col.filterMatchMode)">
您可以这样做:
<input *ngSwitchCase="'vin'" pInputText type="text" (keyup.enter)="dt.filter($event.target.value, col.field, col.filterMatchMode)">