【问题标题】:p:dataTable initial SortBy with dynamic columnsp:dataTable 具有动态列的初始 SortBy
【发布时间】:2015-02-16 22:25:58
【问题描述】:

我想按默认列对表格进行排序。我在文档中找到了以下示例:

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

这适用于静态列。默认情况下,它按“模型”列排序。但这如何与动态列 (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 方法中。属性tableSortByExpressioncolumnSortByExpression 不同。

这是一个错误吗?任何帮助或解决方法?我正在使用 PrimeFaces 4.0。但我也用 5.1 测试过。

【问题讨论】:

    标签: jsf jsf-2 primefaces


    【解决方案1】:

    我有类似的问题,并在 primefaces 论坛上问过

    答案在这里

    http://forum.primefaces.org/viewtopic.php?f=3&t=41301&p=130146#p130146

    所以你的例子中的工作代码应该是

    <p:dataTable id="cars" var="car" value="#{dtColumnsView.cars}"
    widgetVar="carsTable"
    filteredValue="#{dtColumnsView.filteredCars}"
    sortBy="#{false}" sortField="model">
    
        <p:columns value="#{dtColumnsView.columns}" var="column"  
                   columnIndexVar="colIndex" sortBy="#{car[column.property]}"  
                                                  field="#{column.property}">
    
            <f:facet name="header">
                <h:outputText value="#{column.header}" />
            </f:facet>
    
            <h:outputText value="#{car[column.property]}" />
        </p:columns>
    </p:dataTable>
    

    【讨论】:

    • columnProperty 中的field="#{columnProperty}" 是什么?
    • 应该是column.property 而不是columnProperty
    • 为什么需要sortBy="#{false}"?
    猜你喜欢
    • 2012-11-10
    • 2017-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多