PrimeFaces DataTable rowSelect 无法选中复选框
PrimeFaces DataTable rowSelect cannot check checkbox
我试图用 <h:selectBooleanCheckbox>
“link” <p:ajax event="rowSelect">
和 <p:ajax event="rowUnselect">
所以当数据表行被 selected 时,复选框会一起检查当复选框被选中时,数据表行也会被 selected。
现在的问题:我可以在转到另一个分页页面时保存复选框的状态,但我需要先选中复选框然后 select 行,然后它才会保存状态。如果我尝试只选中复选框并转到其他分页页面,当我返回分页页面时它不会保存状态但是如果我 select 行并转到其他分页页面,它会保存状态.如果我 select 行并选中复选框并转到另一个分页页面,它也不会保存状态。知道如何在单击任一 1 时检查复选框和 select 行,并且如果转到另一个分页页面可以保存状态吗?
<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代码
private boolean checked;
public void selectedRow() {
checked = true;
}
public void unSelectedRow() {
checked = false;
}
public boolean checkButton() {
return checked;
}
您不需要自己实现复选框。只需添加一个选择列,如:
<p:column selectionMode="multiple"/>
要跟踪选择的内容,请使用:
<p:dataTable selectionMode="multiple"
selection="#{bean.listOfSelectedItems}"
...>
参见:
我试图用 <h:selectBooleanCheckbox>
“link” <p:ajax event="rowSelect">
和 <p:ajax event="rowUnselect">
所以当数据表行被 selected 时,复选框会一起检查当复选框被选中时,数据表行也会被 selected。
现在的问题:我可以在转到另一个分页页面时保存复选框的状态,但我需要先选中复选框然后 select 行,然后它才会保存状态。如果我尝试只选中复选框并转到其他分页页面,当我返回分页页面时它不会保存状态但是如果我 select 行并转到其他分页页面,它会保存状态.如果我 select 行并选中复选框并转到另一个分页页面,它也不会保存状态。知道如何在单击任一 1 时检查复选框和 select 行,并且如果转到另一个分页页面可以保存状态吗?
<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代码
private boolean checked;
public void selectedRow() {
checked = true;
}
public void unSelectedRow() {
checked = false;
}
public boolean checkButton() {
return checked;
}
您不需要自己实现复选框。只需添加一个选择列,如:
<p:column selectionMode="multiple"/>
要跟踪选择的内容,请使用:
<p:dataTable selectionMode="multiple"
selection="#{bean.listOfSelectedItems}"
...>
参见: