如何在可编辑的p:dataTable中呈现p:selectOneMenu

时间:2014-10-30 15:19:04

标签: jsf-2 primefaces glassfish-3

我想在p:selectOneMenu事件后在p:dataTable内呈现rowEditInit。我尝试了update="degreeType"update=formid:editTable:degreeType,但它没有用。 update="@this不是一个选项,因为它刷新整个表并清除编辑选择。由于它是dataTable,因此元素的确切ID为formid:editTable:0:degreeType0为行号。我应该如何获取当前行ID号并放入update字段?

<p:dataTable id="editTable" value="#{bean.emp}" var="stud" disabledSelection="true" editable="true" >
    <p:ajax event="rowEditInit" listener="#{bean.onRowInit}" update="degreeType"/>
    <p:ajax event="rowEdit" listener="#{bean.onRowEdit}" />
    <p:ajax event="rowEditCancel" listener="#{bean.onRowCancel}" />
    <!-- a bunch of p:column tags -->
    <p:column headerText="Degree">
        <p:cellEditor>
            <f:facet name="output"><h:outputText value="#{stud.degree}" /></f:facet>
            <f:facet name="input">
                <p:selectOneMenu value="#{stud.degree}" style="width: 100%" >
                    <f:ajax event="change" listener="#{bean.degreeListener}"  render="degreeType" />
                    <f:selectItem  itemLabel="Select One" itemValue=""/>
                    <f:selectItem itemLabel="MS" itemValue="MS"/>
                    <f:selectItem itemLabel="BS" itemValue="BS"/>
                </p:selectOneMenu>
            </f:facet>
        </p:cellEditor>   
    </p:column>
    <p:column headerText="DegreeType">
        <p:cellEditor id="test">
            <f:facet name="output"><h:outputText value="#{stud.degreeType}" /></f:facet>
            <f:facet name="input">
                <p:selectOneMenu id="degreeType" value="#{stud.degreeType}" rendered="true">
                    <f:selectItem itemLabel="Select One" itemValue="" noSelectionOption="true"/>
                    <f:selectItems value="#{stud.degreeTypes}"/> 
                </p:selectOneMenu>
            </f:facet>
        </p:cellEditor>
    </p:column>

    <p:column style="width: 30px">
        <p:rowEditor />
    </p:column>
</p:dataTable>

0 个答案:

没有答案