我有一个带有rowEdit的Primefaces dataTable。两列包含每个中的selectOneMenu控件。第一个selectOneMenu的值为SINGLE,MULTIPLE。如果它是SINGLE,则第二列应包含selectOneMenu,如果它是MULTIPLE,则第二列应包含pickList。 最初,第二列显示selectOneMenu或pickList,根据bean中设置的第一个selectOneMenu中的值。但是当用户在第一个selectOneMenu中更改值时,我希望第二个列中的第二个selectOneMenu或pickList可见。我尝试使用JQuery但没有成功。以下是代码......
<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 :(得分:0)
相互依赖的验证在RowEditEvent
中处理