2014-02-19 12 views
0

我們有一個複雜的表單,其中組合框是動態創建的並且比數據庫填充的更容易(比如說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

由於數據網格遍歷對象的列表,我想你可以做這樣的事情:

<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你確切地知道COMBO改變什麼CB在列表中選擇啓用。另外,您可以更新整個數據網格,因此您無需知道確切的ID。