我正在开发一个PrimeFaces项目,我选择在p:DataGrid中使用p:DataTable。 DataTable的selectionMode属性设置为“multiple”。我在页面上有一个按钮,当我点击它时,我希望在各种生成的表中获得所有选中的复选框。所有复选框都带有相同类型的信息(由于我在项目中使用的信息分组方案,它们位于不同的表中)。
由于我在最终呈现的页面中有多个DataTable,我如何获得所选的复选框?我尝试使用DataTable的selection="#{myBean.selectedOptions}"
属性,但它似乎只获得了一个生成的表的选定选项(显然是第一个)。我该怎么做才能获得p:DataGrid生成的所有表的选定选项? JavaScript的?我在DataTable行为中是否缺少任何一点?
(嗯..我不知道我是否能够让自己足够清楚 - 英语不是我的母语)。
[编辑] 更多信息:
下面是我所做的简化视图(更类似于上一个案例,但它只是为了得到全局)
<p:dataGrid var="gridCellContent"
value="#{myBean.dataGridContent}"
layout="grid" id="id01" columns="3"">
<p:dataTable var="something"
value="#{gridCellContent.listOfSomething}"
rowKey="#{something.id}"
selection="#{myBean.listOf_B_Objects.get(gridCellContent.counter).listInside_B_Object}">
<p:column selectionMode="multiple" />
<p:column>
<h:outputText value="#{something.sometext}" />
</p:column>
</p:dataTable>
<f:facet name="footer">
<p:commandButton id="btnSave" value="Save"
actionListener="#{myBean.btnSave}"/>
</f:facet>
</p:dataGrid>
[编辑2] 关注@ JaqenH'ghar的消息后,我尝试了下面的修改,遗憾的是仍然无法正常工作:
<p:dataGrid var="gridCellContent"
value="#{myBean.dataGridContent}"
layout="grid" id="id01" columns="3"
rowIndexVar="count">
<p:dataTable var="something"
value="#{gridCellContent.listOfSomething}"
rowKey="#{something.id}"
selection="#{myBean.listOfLists.get(count)}">
<p:column selectionMode="multiple" />
<p:column>
<h:outputText value="#{something.sometext}" />
</p:column>
</p:dataTable>
<f:facet name="footer">
<p:commandButton id="btnSave" value="Save"
actionListener="#{myBean.btnSave}"/>
</f:facet>
</p:dataGrid>
对于myBean:
@ManagedBean
public class MyBean {
...
private List<List<Something>> listOfLists = new ArrayList<List<Something>>();
public List<List<Something>> getListOfLists(){
this.listOfLists.add(new ArrayList<Something>());
return this.listOfLists;
}
public void setListOfLists(List<Something> listOfSomething) {
this.listOfLists.add(listOfSomething);
}
...
}