p:dataTable在不使用元键(选择作品)的情况下取消选择行



我使用的是:

服务器:Wildfly 8.2JSF: 2.2Primefaces: 5.2JDK: 8

我有一个多重选择的数据表。我使用rowSelectMode='add',所以点击不同的行没有修改键添加新行,而不是取消选择所有选定的。

<p:dataTable id="table"
          value="#{ixController.files}"
         var="item" paginatorTemplate="{FirstPageLink} {PreviousPageLink}
                                {PageLinks}
                                {NextPageLink} {LastPageLink}"
         selection="#{ixController.selecteds}"
         rowKey="#{item.id}"
         rowSelectMode="add"
         selectionMode="multiple">
<p:column headerText="Files">
    #{item.fileName}
</p:column>

如前所述,它可以很好地添加行,但是我需要按Ctrl取消选择行,客户希望再次单击行并取消选择。

这可能吗?

使用复选框,这样他们可以选择和取消选择,只需点击它,以Prime Faces为例:

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

我找不到这个属性,但是,有一种方法:

<p:dataTable value="#{groupBean.groups}" var="grp" rowKey="#{grp.id}"
     selectionMode="single" selection="#{groupBean.group}">
    <p:ajax event="rowSelect" listener="#{groupBean.onRowSelect}" update="@all" />

可以看到,当单击一行时,selectedItem设置为groupBen.goup对象。

public void onRowSelect(SelectEvent event) {
    if (prevGroupId == group.getId())
        group = new PersonelGroup();
    else
        prevGroupId = group.getId();
}

onRowSelect方法中,您可以通过比较之前选择的项目id来检查用户是否第二次单击同一行。通过实例化group对象为new, DataTable被更新为无选择状态。

重要的是不要忘记添加update="@all"属性的DataTable

相关内容

  • 没有找到相关文章

最新更新