2017-07-31 13 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> 

を、私は(この場合はstatusNameある)ITEMLABELで列をフィルタリングします。ステータス名は、IDよりもフロントエンドユーザーにとってより価値があります。

 <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> 

ここにトリックはあなたのStatusCodeクラスtoString()リターンjustをさせることです。

編集

これはprimefaces 3.5.8

+0

を助け願っていますし、あなたはすべてのコントロールを持っています – Kukeltje

答えて

0

この

のFaceletsページを試してみてくださいですstatusNameと同様に

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; 
    } 

} 

とあなたの

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

あなたBackingBeanに私はlazyDataModelを使用し、これは

関連する問題