2013-10-24 31 views
1

我想在我的jsf页上的数据表上实现一个全局过滤器。 输入的文本过滤器工作正常,用下面的代码:全球<p:datatable>过滤器与<p:selectOneMenu>将不起作用

<p:inputText id="globalFilter" onkeyup="examTable.filter();" style="width:200px" /> 

,但是当我尝试用selectOneMenu用于组件同样的方法,将无法正常工作。

我曾经尝试这样的代码:

<p:selectOneMenu id="state" value="#{examenListBean.stateOption}"onchange="examTable.filter();"> 

     <f:selectItems value="#{examenListBean.etatExamOptions}"/> 

</p:selectOneMenu> 

但无济于事。

这里是我的电话号码:数据表标签:服务器端也许

<p:dataTable id="tabexam" 
       paginatorPosition="bottom" 
       var="exam" 
       value="#{examenListBean.listexam}" 
       widgetVar="examTable" 
       emptyMessage="Aucun résultat n'a été trouvé avec les critères donnés" 
       filteredValue="#{examenListBean.filteredexams}" 
       paginator="true" 
       rows="30" 
       paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
       rowsPerPageTemplate="5,10,15,30" 
       resizableColumns="true"> 
+0

它可能与http://stackoverflow.com/questions/17858753/primefaces-custom-component-for-live-filtering-in-datatable有关。 –

回答

2

我有同样的问题,它似乎只是,primefaces不允许它的类型的东西。我的最终目标是能够将'selectOneMenu'表移出列并将它们放入标题中,但目前这就是我所做的。

这是由于primefaces似乎访问它的结构准备它们为过滤器做好准备的方式。

我所做的是创造了一个“隐藏”的号码:inputText字段使用id =“globalFilter”并取得编号显示:无...

然后使用selecOneMenu和一个创建2个搜索字段(一个刚一个inputText字段)。 然后使用这些类型的onchange或onkeyup函数来调用我的JavaScript函数,它使用jQuery将隐藏的字段更新为所选值,然后调用crpTable功能。

<script type="text/javascript"> 

     function doFilter1() 
     { 
      $("#globalFilter").val($("#globalFilter1").val()); 
      widgetVarTableId.filter(); 
     }; 
     function doFilter2() 
     { 
      $("#globalFilter").val($("#globalFilter2").val()); 
      widgetVarTableId.filter(); 
     }; 

</script> 

<style> 
    .myGlobalFilter { 
     display:none;  
    } 

</style> 

在我的F:小名=标头,我

<p:inputText id="globalFilter" styleClass="myGlobalFilter"/> 

<h:outputText value="filter one: "/> 
<h:selectOneMenu id="globalFilter1" onchange="doFilter1();"> 
    <f:selectItems value="#{formBean.filterOptions}" /> 
</h:selectOneMenu> 

<h:outputText value="filter two: "/> 
<p:inputText id="globalFilter2" onkeyup="doFilter2();"> 

这个工程,我希望..但是短期未来使用primefaces .filter的() - 是你不能改变它是'精确''startsWith'等等,它总是'包含'不用修改PF源代码。

希望这会有所帮助!

+0

辉煌的工作谢谢,虽然不幸是“包含”。 –

2

尝试过滤:

<p:selectOneMenu id="state" value="#{examenListBean.stateOption}"> 
      <f:selectItems value="#{examenListBean.etatExamOptions}"/> 
      <p:ajax event="change" process="@this" listener="#{myBean.filteringMethod}" update=":absPath:tabexam"/> 
</p:selectOneMenu> 

不知道你的JavaScript方法的样子,用<p:remoteCommand>和更新也许尝试你的桌子在那里。

+0

其实我正在寻找一种方法来筛选不排序数据表,我也有服务器端筛选的工作方法,我需要的是客户端筛选,特别是与选择选项,因为我正在处理大块的数据。 –

+0

虽然你的方法非常快,而且很有用。 –

+0

你是正确的过滤,虽然相同的行动。 – Kuba