我们有一个复杂的形式,动态创建组合框并由数据库填充(比方说5)。问题是必须按顺序选择它们:只应在开始时启用第一个,更改其值将启用下一个,依此类推。我理解Primefaces Showcase的例子,但表格是静态的。
这是迭代的一些伪代码:
<p:dataGrid ... >
<p:column ... >
<p:selectOneMenu id="WhichIdToChoose?" disabled="when?" ...>
<f:selectItems value="#{Some.value}" />
<p:ajax update="chosenIds?" listener="#{bean.handleStateChanged}" />
</p:selectOneMenu>
</p:column>
</p:dataGrid>
所以问题是我不知道如何找到第一个cb并启用它和如何禁用其他以及如何重新启用它们基于他们的动态ID和外观顺序。
提前致谢。
答案 0 :(得分:0)
当数据网格迭代一个对象列表时,我想你可以这样做:
<p:dataGrid id="dataGrid" var="var" value="#{bean.listOfThins}">
<p:column ... >
<p:selectOneMenu value="{var.selectedValue} disabled="#{var.disabled}">
<f:selectItems value="#{Some.value}" />
<p:ajax update="dataGrid" listener="#{bean.handleStateChanged(var)}" />
</p:selectOneMenu>
</p:column>
</p:dataGrid>
这种方式在handleStateChanged中你确切地知道组合改变了什么以及在列表中启用了什么cb。此外,您可以更新整个dataGrid,这样您就不需要知道确切的ID。