2012-12-04 76 views
3

香港專業教育學院有一個Primefaces的DataTable這樣JSF primefaces數據表號碼:列

<p:dataTable 
    value="#{valueList.value}" 
    var="value" 
    selection="#{valueList.selected}" 
    id="measurementTable" 
    paginator="true" 
    rows="20" 
    rowsPerPageTemplate="20,25,30,35,40"/> 

和動態列這個

<p:columns 
    value="#{valueList.columns}" 
    var="column" 
    columnIndexVar="colIndex" 
/> 

這工作得很好,我的數據表看起來不錯,但是當我添加

sortBy="#{value.charge}" 

p:columns我點擊列排序的CSS樣式是destroyd和我得到了一個列出與我的數據不是數據表,這是非常醜陋的。


我的代碼

<p:dataTable 
     value="#{measurementList.measurements}" 
     var="measurement" 
     selection="#{measurementList.selected}" 
     id="measurementTable" 
     paginator="true" 
     rows="20" 
     rowsPerPageTemplate="20,25,30,35,40" 
     rowKey="#{measurement.mdkFid}" 
     emptyMessage="#{measurementList.getCapString('no_records_found')}"> 

     <p:column selectionMode="multiple" style="width:18px" /> 

     <p:column> 
      <p:commandLink title="#{measurementList.getString('edit')}" update=":contentPanel"> 
       <h:outputText styleClass="ui-icon ui-icon-pencil" /> 
       <f:actionListener binding="#{measurementList.editSelected(measurement) }" /> 
       <f:actionListener binding="#{navigation.goTo('/xhtml/measurements/editMeasurement.xhtml') }" /> 
      </p:commandLink> 
     </p:column> 

     <p:columns 
      value="#{measurementList.columns}" 
      var="column" 
      columnIndexVar="colIndex" 
      styleClass="measurementListDatatableColumn" 
      sortBy="#{column.displayName}" 
      > 
      <f:facet name="header">#{column.displayName}</f:facet> 
       <p:column> 
        #{measurement[column.methodName]} 
       </p:column> 
     </p:columns> 

回答

3

你的排序應該是這個樣子

sortBy="#{value[column.charge]}" 

看看陳列櫃例如DataTable - Dynamic Columns

變化

<p:columns 
     value="#{measurementList.columns}" 
     var="column" 
     columnIndexVar="colIndex" 
     styleClass="measurementListDatatableColumn" 
     sortBy="#{column.displayName}" 
     > 
     <f:facet name="header">#{column.displayName}</f:facet> 
      <p:column> 
       #{measurement[column.methodName]} 
      </p:column> 
    </p:columns> 

<p:columns 
     value="#{measurementList.columns}" 
     var="column" 
     columnIndexVar="colIndex" 
     styleClass="measurementListDatatableColumn" 
     sortBy="#{measurement[column.methodName]}" 
     > 
     <f:facet name="header"> 
      #{column.displayName} 
     </f:facet> 

     #{measurement[column.methodName]} 

    </p:columns> 

一般而言:用於顯示列的數據相同的EL表達,應該使用sortBy

+0

感謝您的快速anwers爲但這是相同的結果。 – user1740789

+0

你有'charge'屬性+ getter在你的'列'對象中嗎? – Daniel

+0

是的,我的setter是一個getter,但價值費用爲值對象 – user1740789