Primefaces使用子表格在数据表上过滤/排序

时间:2013-03-14 14:15:33

标签: jsf primefaces

所以我要说下面的表格:

        <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组件对子列表进行过滤/排序?我唯一能想到的就是输入一个自定义命令链接来完成它。

2 个答案:

答案 0 :(得分:0)

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

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

我认为这种方法也许可以用于 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>

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

答案 1 :(得分:-1)

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

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

试试..