0

我只是想在我的p:dataTable. 我有一份可供任何人购买的汽车清单。我想在数据表中显示这个。其中第一行包含有关汽车的信息,接下来的行包含有关买方的信息。每辆车都会重复这种模式。

下面是我的汽车 bean,它有一个买家数组(这里省略了 Getter 和 setter)-

public class Car {    
    private int id;
    private String name;
    private String model;
    private Buyer[] buyer;
}

买方 bean 如下所示 -

public final class Buyer {
    private int id;
    private String name;
    private String address;
}

最后是控制器,其中包含汽车列表-

@ManagedBean
@ViewScoped
public class Seller implements Serializable{
    private List<Car> list;
}

根据丹尼尔的建议,我以这种方式实现了它-

    <p:panel>
        <h:form>
            <p:dataTable id="dataTable" var="car" value="#{seller.list}">
                <p:column style="width:4%">  
                    <p:rowToggler />  
                </p:column> 
                <p:column style="width:32%">  
                    <f:facet name="header">  
                        Id
                    </f:facet>  
                    <h:outputText value="#{car.id}" />  
                </p:column>  
                <p:column style="width:32%">  
                    <f:facet name="header">  
                        Name
                    </f:facet>  
                    <h:outputText value="#{car.name}" />  
                </p:column>  
                <p:column style="width:32%">  
                    <f:facet name="header">  
                        Model
                    </f:facet>  
                    <h:outputText value="#{car.model}" />  
                </p:column>
                <p:rowExpansion>  
                    <p:dataTable var="buyer" value="#{car.buyer}">  
                        <p:column headerText="Id">  
                            <h:outputText value="#{buyer.id}" />  
                        </p:column>  
                        <p:column headerText="Name">  
                            <h:outputText value="#{buyer.name}" />  
                        </p:column>  
                        <p:column headerText="Address">  
                            <h:outputText value="#{buyer.address}" />  
                        </p:column>  
                    </p:dataTable>  
                </p:rowExpansion>
            </p:dataTable>  
        </h:form>
    </p:panel>
4

1 回答 1

1

看一下展示DataTable - RowExpansion

至于扩展所有...一种方法可能是:

包含一些js文件,代码如下

$(document).ready(function () { 
    $(".ui-row-toggler").click(); 
}); 

或将其包含在您的 xhtml 页面中

<h:outputScript target="head">
    $(document).ready(function () { $(".ui-row-toggler").click(); });
</h:outputScript>

可能还有其他更多的原生 api 用法来扩展行(但我不熟悉这些)

于 2013-04-28T14:23:34.297 回答