Primefaces Datatable搜索过滤器

时间:2012-11-13 11:07:28

标签: java java-ee jsf-2 primefaces

默认设置会在过滤器字段中的每次击键时更新表。我只想在用户输入内容并按回车键时显示结果列表。

4 个答案:

答案 0 :(得分:2)

对于全局过滤器,您可以使用event.keyCode == 13

像这样

<f:facet name="header">  
    <p:outputPanel>  
       <h:outputText value="Search all fields:" />  
       <p:inputText id="globalFilter" onkeyup="if (event.keyCode == 13) { 
           carsTable.filter(); }" style="width:150px" />  
    </p:outputPanel>  
</f:facet>  

答案 1 :(得分:2)

您尚未说明您的版本,但自PF 3.2起,您可以在enter上使用filterEvent事件。早期版本,您可以使用this javascript workaround

答案 2 :(得分:1)

重要的是要强调filterEvent是dataTable标签的一个属性,例如, javascript workaround已在列标记中显示,但这样做效果不佳。 您可以这样使用:

<p:dataTable id="companyTable" 
     value="#{fooManager.foo}" var="foo"
     filterEvent="enter">

    <p:column filterBy="#{foo.name}" >
        <h:outputText value="#{foo.name}" />
    </p:column>

</p:dataTable>

或者您可以使用filterEvent =“Keyup”,这是此属性的默认值,并且在发送ajax过滤器查询(默认值为300毫秒)之前1000毫秒内定义的filterDelay,如下所示:

<p:dataTable id="companyTable" 
     value="#{fooManager.foo}" var="foo"
     filterEvent="keyup"
     filterDelay="1000">

    <p:column filterBy="#{foo.name}" >
        <h:outputText value="#{foo.name}" />
    </p:column>

</p:dataTable>

我希望能帮助你。

答案 3 :(得分:0)

您现在可以使用相应的列选项。最简单的数据列示例是:

p:column filterEvent="enter"