简体   繁体   English

jsf primefaces datatable p:columns

[英]jsf primefaces datatable p:columns

ive got a Primefaces DataTable like this 我有这样的Primefaces DataTable

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

and dynamic Columns with this 和动态列

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

this works fine and my Datatable looks good , but when i add 这工作正常,我的数据表看起来很好,但是当我添加

  sortBy="#{value.charge}"

to p:columns and i was click on column to sort the css style is destroyd and ive got a List with my Data not a DataTable, this is very ugly. p:columns和我点击列来排序css样式是destroyd和我有一个List我的数据不是DataTable,这是非常难看的。


My code 我的代码

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

Your sort should look something like 你的排序看起来应该是这样的

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

Take a look at the showcase example DataTable - Dynamic Columns 看一下展示示例DataTable - 动态列

Change 更改

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

into

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

In general : the same EL expression that is used to display the data of the column , should be used for the sortBy 通常:用于显示列数据的相同EL表达式应该用于sortBy

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM