2

所以可以说我有下表:

        <p:dataTable id="genaricTable" var="item" value="#{genaricBean.currentValue}" >
            <p:columnGroup type="header"> 
                <p:row>
                    <p:column rowspan="" headerText="value1"/>
                    <p:column rowspan="" headerText="value2"/>
                    <p:column rowspan="" headerText="value3"/>
                </p:row> 
            </p:columnGroup>  
            <p:subTable var="subItem" value="#{item.subItemList}" >
                <f:facet name="header">  
                  #{item.header}
                </f:facet> 
                <p:column>
                    <h:outputText value="#{subItem.value1}"/>
                </p:column>
                <p:column>
                    <h:outputText value="#{subItem.value1}"/>
                </p:column>
                <p:column>
                    <h:outputText value="#{subItem.value1}"/>
                </p:column>
            </p:subTable>
        </p:dataTable>

有没有办法可以使用内置的 primefaces 组件按子列表进行过滤/排序?我唯一能想到的就是放入一个自定义命令链接来执行此操作。

4

2 回答 2

1

你是对的。当您将sortBy属性添加到子表内的列定义时,它不起作用。

然而,有一个非常简单的解决方案。将其添加到标题 columnGroup内的列定义中。如果在此处定义,PrimeFaces 会处理此属性。

我想这种方法可能也适用于filterBy,但我没有尝试过。

<p:columnGroup type="header"> 
    <p:row>
        <p:column rowspan="" headerText="value1" sortBy="#{subItem.value1}"/>
        <p:column rowspan="" headerText="value2"/>
        <p:column rowspan="" headerText="value3"/>
    </p:row> 
</p:columnGroup>

编辑:您当然需要考虑您的基础数据集,并且可能使用不同的东西作为排序表达式,或者也可能在您的托管 Bean 中编写一些解决方法,因为分层数据从未如此简单。我使用该表达式只是为了说明解决方案。

于 2013-05-08T10:05:45.310 回答
-1

要对子列表进行排序,您可以在子列表中添加 sortBy ..类似这样的东西..

            <p:column sortBy="#{subItem.value1}">
                <h:outputText value="#{subItem.value1}"/>
            </p:column>

试试..

于 2013-03-15T09:56:12.513 回答