如何在订单中解除/启用动态创建的组合框

时间:2014-02-19 10:53:24

标签: java forms jsf-2 primefaces

我们有一个复杂的形式,动态创建组合框并由数据库填充(比方说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和外观顺序

提前致谢。

1 个答案:

答案 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。