在SelectOneChoice中禁用selectItem

时间:2015-02-10 16:11:53

标签: combobox oracle-adf

嘿伙计们,我用ADF在GUI上尝试一些全新的东西。这是我的第一次ADF体验,我真的不知道如何做这样的事情:

我有几个SelectOneChoice(让他们从1到6称它们为组合框)和一些selectItems(让他们称之为选项:空白,慢,中,快)

现在,我必须确保如果我选择组合框1 - 空白。所有其他人都有4种选择。

然后我将踩到组合框2 - 中等。在这种情况下,3到6的组合框不能具有快速值,因为它不能比组合框更快"以上#34;

所有其他组合框也是如此,如果"慢"然后选择所有组合"下面"必须只有选项"慢"或"空白"。

我该怎么做?

这是我尝试过的:

af:selectOneChoice id="soc2"
binding="#{backingBeanScope.backing_Setup.soc2}"
autoSubmit="true"                                                                                                  

    valueChangeListener="#{backingBeanScope.backing_Setup.disableLowerLevelsA}">
<af:selectItem
id="si48"
binding="#{backingBeanScope.backing_Setup.si48}"/>
<af:selectItem label="Slow"
value="slow" id="si3"                                                                                                      binding="#{backingBeanScope.backing_Setup.si3}"/>                                                                                      <af:selectItem label="Medium"                                                                                                       value="medium"                                                                                                       id="si5"                                                                                                       binding="#{backingBeanScope.backing_Setup.si5}"/>                                                                                       <af:selectItem label="Fast"                                                                                                      value="fast" id="si4"
binding="#{backingBeanScope.backing_Setup.si4}"/>
</af:selectOneChoice>
<af:selectOneChoice id="soc5"
binding="#{backingBeanScope.backing_Setup.soc5}"
partialTriggers="soc2">
<af:selectItem                                                                                                       id="si49"                                                                                                      binding="#{backingBeanScope.backing_Setup.si49}"/>                                                                                       <af:selectItem label="Slow"                                                                                                       value="slow"                                                                                                      id="si12"                                                                                                      binding="#{backingBeanScope.backing_Setup.si12}"/>                                                                                       <af:selectItem label="Medium"                                                                                                      value="medium"                                                                                                      id="si14"               

                                                                                    binding="#{backingBeanScope.backing_Setup.si14}"/>                                                                                        <af:selectItem label="Fast"                                                                                                       value="fast"                                                                                                       id="si13"                                                                                                       binding="#{backingBeanScope.backing_Setup.si13}"/>                                                                                 </af:selectOneChoice>

等等......我已经将触发器和监听器添加到相应的组合中。但是当我改变第一个组合框的内容时(即:中),另一个保持所有选项可见。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

在第一个SelectOneChoice的valueChangeListener中,以编程方式获取第二个SelectOneChoice的Viewcriteria,并确保将第一个SelectOneChoice的ID列(非选定值)作为绑定变量发送。 同时将viewcriteria设置为接受此绑定变量,并使用less than or equal to执行查询,假设ID已按升序排序。

//To get VC and execute it
    ViewObjectImpl vo = getEmployeesView();
    ViewCriteria vc = vo.getViewCriteria("findEmployeeVC");
    vo.applyViewCriteria(vc);
    vo.setNamedWhereClauseParam("pEmployeeId", employeeId);
    vo.executeQuery();

选择第一个SelectOneChoice后,不要忘记PPR第二个SelectOneChoice刷新LOV。