输入Primefaces dataTable过滤器

时间:2014-11-23 08:20:13

标签: jsf jsf-2 primefaces filter datatable

我使用的是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?

3 个答案:

答案 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)">