首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PrimeFaces DataTable rowSelect不能选中复选框

PrimeFaces DataTable rowSelect不能选中复选框
EN

Stack Overflow用户
提问于 2021-10-15 03:13:39
回答 1查看 784关注 0票数 1

我试图将<p:ajax event="rowSelect"><p:ajax event="rowUnselect"><h:selectBooleanCheckbox>“链接”,因此当选中datatable行时,复选框将一起选中,当选中复选框时,也会选中datatable行。

现在的问题是:在转到另一个分页页面时,我可以保存复选框的状态,但是我需要选中复选框,然后选择行,然后只有行才能保存状态。如果我尝试只选中复选框并转到其他分页页,当我回到分页页时,它不会保存状态,但是如果我选择行并转到其他分页页,它将保存状态。如果我选择行和复选框并转到另一个分页页面,它也不会保存状态。知道当单击1时,如何选中复选框并选择行,如果转到另一个分页页,则可以保存状态吗?

代码语言:javascript
运行
复制
    <p:dataTable value="#{machine.sub}" var="subDir" 
                 id="fileDirectories" rowClasses="row1-whitebg,row2-bluebg" 
                 selectionMode="multiple" selectionPageOnly="false" 
                 rowKey="#{subDir.directory.path}" headerClass="title-column" 
                 rowIndexVar="idx" rows="10" rowsPerPageTemplate="10,20,50" paginator="true" 
                 paginatorAlwaysVisible="false" 
                 paginatorTemplate="#{WebConstant.PAGINATOR_TEMPLATE}">
    
                <p:ajax event="rowSelect" listener="#{machine.selectedRow}"/>
                <p:ajax event="rowUnselect" listener="#{machine.unSelectedRow}"/>
        
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="#{msg['machine_download']}"/>
                    </f:facet>
                    <h:panelGroup id="panelGroupChkSelect">
                        <h:selectBooleanCheckbox id="chkSelect" value="#{subDir.selected}"
                                                 rendered="#{subDir.directory.file}">
                            <c:if test="#{machineLogExplorerPage.checkButton()}">
                                <f:attribute name="checked" value="checked"/>
                            </c:if>
                        </h:selectBooleanCheckbox>
                    </h:panelGroup>
                </p:column>
    </p:dataTable>

Java代码

代码语言:javascript
运行
复制
private boolean checked;

  public void selectedRow() {
    checked = true;
  }

  public void unSelectedRow() {
    checked = false;
  }

  public boolean checkButton() {
    return checked;
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-15 05:37:47

您不需要自己实现复选框。只需添加一个选择列,如:

代码语言:javascript
运行
复制
<p:column selectionMode="multiple"/>

要跟踪所选内容,请使用:

代码语言:javascript
运行
复制
<p:dataTable selectionMode="multiple"
             selection="#{bean.listOfSelectedItems}"
             ...>

请参见:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69579601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档