我想按默认列对表格进行排序。我在文档中找到了以下示例:
<p:dataTable var="car" value="#{carBean.cars}" sortBy="model">
<p:column sortBy="model" headerText=”Model”>
<h:outputText value="#{car.model}" />
</p:column>
<p:column sortBy="year" headerText="Year">
<h:outputText value="#{car.year}" />
</p:column>
...more columns
</p:dataTable>
这对于静态列的工作很好。默认情况下,它按列'model'排序。但是动态列(p:columns)如何工作?
如果我以同样的方式实现:
<p:dataTable id="cars" var="car" value="#{dtColumnsView.cars}"
widgetVar="carsTable"
filteredValue="#{dtColumnsView.filteredCars}"
sortBy="#{car.model}">
<p:columns value="#{dtColumnsView.columns}" var="column"
columnIndexVar="colIndex" sortBy="#{car[column.property]}">
<f:facet name="header">
<h:outputText value="#{column.header}" />
</f:facet>
<h:outputText value="#{car[column.property]}" />
</p:columns>
</p:dataTable>
已正确排序,但未设置所排序列的表头样式!如果使用sortBy="#{car[column.property]}"
,则所有列的样式都会被设置,并且排序不起作用。我认为问题出在DataTableRenderer
的resolveDefaultSortIcon
方法中,属性tableSortByExpression
与columnSortByExpression
不同。
这是一个错误吗?有什么帮助或解决方法吗?我正在使用PrimeFaces 4.0,但我也已经测试了5.1版本。
field="#{columnProperty}"
中,columnProperty
是什么? - Mohammad Faisalcolumn.property
而不是columnProperty
。 - Mohammad FaisalsortBy="#{false}"
? - Mohammad Faisal