Primefaces数据表输入筛选器

jak*_*tus 1 datatable jsf filter primefaces jsf-2

我正在使用带有过滤器选项的primefaces 5.0和datatable。但是键入一个字母并等待将被过滤和更新然后键入下一个字母是不方便的。这也会减慢服务器速度。因此,在填写过滤器选项然后进行过滤之后,需要按Enter键。

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;
                            }
                        });
                    });
Run Code Online (Sandbox Code Playgroud)

好吧,它没有用。

我如何用primefaces 5做到这一点?

小智 5

根据PrimeFaces用户指南(5.0和5.1),仍然存在选项filterEvent =“ ...”和filterDelay =“ ...”

名称:filterEvent,默认值:keyup,类型:字符串,描述:调用输入过滤器过滤的事件。名称:filterDelay,默认值:300,类型:整数,描述:发送ajax过滤器查询之前的延迟(以毫秒为单位)。

这两个选项都用于标记p:dataTable

我猜这两个之一应该可以解决您的问题。(“延迟”选项,如果您愿意更改为列上的过滤器,或者另一方面,它仍然存在filterEvent选项)。