【问题标题】:p:column in p:dataTable, "sortBy" descending on the first clickp:dataTable 中的 p:column,“sortBy”在第一次点击时降序
【发布时间】:2015-08-13 06:34:08
【问题描述】:

<p:dataTable><p:column>sortBy 属性允许用户在每次单击时对列进行升序或降序排序,无论如何在第一次单击列标题时对列进行降序排序。默认是升序的。

<p:column sortBy="#{bean.col1Value}" headerText="Col Header">
   #{bean.col1Value}
</p:column>

是否有可能覆盖&lt;p:dataTable&gt; 的默认设置?

【问题讨论】:

    标签: jsf primefaces datatable


    【解决方案1】:

    我认为你可以使用属性 sortFunction。我引用 Primefaces 5.1 用户指南第 153-154 页

    而不是使用使用 java 的默认排序算法 比较器,你也可以插入自己的排序方法

    public int sortByModel(Object car1, Object car2) {
         car2.compareTo(car1);
    }
    

    然后在你的html文件中

    <p:dataTable var="car" value="#{carBean.cars}">
    <p:column sortBy="#{car.model}" sortFunction="#{carBean.sortByModel}"
    headerText="Model">
    <h:outputText value="#{car.model}" />
    </p:column>
    ...more columns
    </p:dataTable>
    

    【讨论】:

    • 因此您有效地“反转”了排序算法中的排序...但是您是否检查了列上的图标的作用?很可能它们与排序不匹配。
    • 我没试过,那么 sortByModel 函数会返回什么?
    • @rashidnk:这是一个 java '比较器':stackoverflow.com/questions/2839137/…
    • @rashidnk 如在此之前的评论中提到的,它应该返回您的自定义排序算法以满足您的要求,即在您第一次点击时默认为降序排序。
    【解决方案2】:

    您需要使用 sortFunction="#{testBean.customSort}" 并且可以自定义排序。

    【讨论】:

      猜你喜欢
      • 2012-12-31
      • 2017-07-03
      • 2023-03-14
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多