触发行选择事件时,PrimeFaces数据表未保留复选框选择行

时间:2018-07-30 15:23:23

标签: primefaces

我有如下要求

具有复选框选择选项和行选择的数据表也保留多选,

当用户单击复选框时,应选择相应的行,同时如果通过行选择事件选择了数据表的任何行,则应重新使用现有的行 选择的项目,当前选择的项目也是如此。

由于素面框架的限制,我无法达到这一要求,有谁可以帮助我达到这一要求

Xhtml示例:

<p:dataTable id="checkboxDT" var="car" value="#{dtSelectionView.cars6}" selection="#{dtSelectionView.selectedCars}" rowKey="#{car.id}" style="margin-bottom:0">
        <f:facet name="header">
            Checkbox
        </f:facet>
        <p:column selectionMode="multiple" style="width:16px;text-align:center"/>
        <p:column headerText="Id">
            <h:outputText value="#{car.id}" />
        </p:column>
        <p:column headerText="Year">
            <h:outputText value="#{car.year}" />
        </p:column>
        <p:column headerText="Brand">
            <h:outputText value="#{car.brand}" />
        </p:column>
        <p:column headerText="Color">
            <h:outputText value="#{car.color}" />
        </p:column>
        <f:facet name="footer">
            <p:commandButton process="checkboxDT" update=":form:multiCarDetail" icon="ui-icon-search" value="View" oncomplete="PF('multiCarDialog').show()" />
        </f:facet>
    </p:dataTable>

Sample Bean:作用域:群组对话作用域

public void onRowSelect(SelectEvent event) {
    FacesMessage msg = new FacesMessage("Car Selected", ((Car) event.getObject()).getId());
    FacesContext.getCurrentInstance().addMessage(null, msg);
}

public void onRowUnselect(UnselectEvent event) {
    FacesMessage msg = new FacesMessage("Car Unselected", ((Car) event.getObject()).getId());
    FacesContext.getCurrentInstance().addMessage(null, msg);
}

注意:

请验证默认组件行为的素面展示

1 个答案:

答案 0 :(得分:1)

  

“由于素面框架的限制,我无法达到此要求,任何人都可以帮助我达到这一要求”

这不是限制,它是设计好的。使用ctrl-click,您可以在单击时添加其他行。但是,如果您要更改此行为,请在page 161 of the PrimeFaces 6.2 documentation上找到相关信息。

rowSelectMode     new     String     Defines row selection mode for multiple selection.
                                     Valid values are "new", "add" and "checkbox".

因此添加

rowSelectMode="add"

最有可能做到这一点。