2017-07-31 89 views
0

我試圖研究這個和變通,所以我已經達到要價的點:DataTable列 - 按selectItems itemLabel過濾?

<p:column headerText="ProjectStatusCode" filter=?? filterMatchMode=?? > 
    <p:selectOneMenu value="#{person.statusCodeIDForProject}"> 
     <f:selectItem itemLabel="None" 
         itemvalue= "-1"/> 
     <f:selectItems value="#{backingBean.allStatusCodes}" 
         var="c" 
         itemLabel="#{c.statusCodeName}" 
         itemValue="#{c.statusCodeID}"/> 
     <p:ajax listener="#{backingBean.editStatusCodeForProject(person.personID, person.statusCodeIDForProject)}"/> 
    </p:selectOneMenu> 
</p:column> 

理想情況下,我想,以濾除itemLabel(在這種情況下是statusName)列。狀態名稱對於前端用戶比ID更有價值。

編輯

這是primefaces 3.5.8

+0

使用lazyDataModel,你有所有的控制 – Kukeltje

回答

0

試試這個

的Facelets頁面:

 <p:dataTable var="bb" value="#{backingBean.dataList}" widgetVar="dataTable" 
        emptyMessage="No item found with given criteria"> 
      <p:column filterBy="#{bb.status}" headerText="list header" footerText="exact" filterMatchMode="exact"> 
       <f:facet name="filter"> 
        <h:selectOneMenu onchange="PF('carsTable').filter()" > 
         <f:selectItem itemLabel="Select One" itemValue="#{null}" noSelectionOption="true" /> 
         <f:selectItems value="#{backingBean.statusList}"/> 
        </h:selectOneMenu> 
       </f:facet> 
       <h:outputText value="#{bb.status}" /> 
      </p:column> 
     </p:dataTable> 

這裏的技巧是讓你StatusCodetoString()回報juststatusName as so

public class StatusClass { 

    String statusName; 
    int statusCode; 

    public StatusClass() { 
    } 

    StatusClass(String name, int i) { 
     this.statusName = name; 
     this.statusCode = i; 
    } 

    public String getStatusName() { 
     return statusName; 
    } 

    public void setStatusName(String statusName) { 
     this.statusName = statusName; 
    } 

    public int getStatusCode() { 
     return statusCode; 
    } 

    public void setStatusCode(int statusCode) { 
     this.statusCode = statusCode; 
    } 


    //return just the status name 
    @Override 
    public String toString() { 
     return "" + statusName; 
    } 

} 

,並在您BackingBean您

private ArrayList<DataClass> dataList;//points to your dataTable value 
private ArrayList<StatusClass> statusList;//points to your statusList for selectOneMenu 

我希望這有助於