2012-02-13 119 views
0

我有一个带有rowEdit的Primefaces数据表。两列包含selectOneMenu控件。首先selectOneMenu的值为SINGLE,MULTIPLE。如果它是SINGLE,第二列应包含selectOneMenu,如果它是MULTIPLE,则第二列应包含pickList。 最初第二列显示selectOneMenu或pickList根据在bean中设置的第一个selectOneMenu中的值。但是,当用户在第一个selectOneMenu中更改值时,我希望第二个selectOneMenu或pickList在第二个列中可见。我尝试使用JQuery,但没有成功。以下是代码......隐藏/显示selectOneMenu,取决于在Primefaces中另一个selectOneMenu中选择的值

<p:cellEditor> 
<f:facet name="output"> 
    <h:outputLabel value="#{bean.INPUTTYPE}" /> 
    </f:facet> 

<f:facet name="input"> 
     <p:selectOneMenu id="inputType" value="#{bean.InputType}" > 
     <f:selectItems value="#{beanDetails.inputTypes}"></f:selectItems> 
      <p:ajax event="change" oncomplete="inputTypeChanged(#{rowIndex})"/> 
     </p:selectOneMenu> 
    </f:facet> 
</p:cellEditor> 
</p:column> 


<p:column> 
    <f:facet name="header"> 
      <h:outputLabel value="Default Value" /> 
    </f:facet> 

    <p:cellEditor> 
    <f:facet name="output"> 
     <h:outputLabel value="#{bean.DEFAULTVALUE}"/> 
    </f:facet> 

    <f:facet name="input"> 
     <p:selectOneMenu id="distinctVals" value="#{bean.DEFAULTVALUE}" rendered="#{bean.fldType == 1}" > 
      <f:selectItems value="#{bean.DISTINCT_VALUES}"/> 
     </p:selectOneMenu> 

     <p:pickList value="#{bean.PICK_VALUES}" id="pickVals" var="pickVals" itemLabel="#{pickVals}" itemValue="#{pickVals}" rendered="#{bean.fldType == 2}"/> 
    </f:facet> 
</p:cellEditor> 
</p:column> 


<script type="text/javascript"> 
    function inputTypeChanged(ind){ 
     var str = 'table_Details:' + ind + ':inputType_input'; 
     var selected = $(document.getElementById(str)); 

     if(selected.val() == 'SINGLE'){ 
      str = 'table_Details:' + ind + ':distinctVals_input'; 
       selected = $(document.getElementById(str)); 
       $(selected).show(); 

       str = 'table_Details:' + ind + ':pickVals_input'; 
       selected = $(document.getElementById(str)); 
       $(selected).fadeOut(); 
     }else if(selected.val() == 'MULTIPLE'){ 
       str = 'table_Details:' + ind + ':distinctVals_input'; 
       selected = $(document.getElementById(str)); 
       $(selected).fadeOut(); 

       str = 'table_Details:' + ind + ':pickVals_input'; 
       selected = $(document.getElementById(str)); 
       $(selected).fadeIn(); 

     } 
    } 
</script> 

我正在使用primefaces-3.1.RC1。我的代码有问题吗?

回答

0

相关的验证在RowEditEvent中处理

相关问题