在Primefaces Datatable中进行默认排序后,选择出错

时间:2015-04-09 16:39:12

标签: jsf primefaces

我的数据表有问题。排序没有呈现,但它似乎有点在后台工作。我没有按顺序看到ID,但是如果我选择一行来编辑或删除它,则按照与显示的顺序不同的顺序选择ID。因此,如果我编辑或删除,它实际上会编辑或删除另一行。

使用primefaces-5.1 javax.faces-2.1.12。

我的数据表

<p:dataTable id="dataEtapas" value="#{etapaMB.dataEtapas}"
            var="etapa" editable="true" ajax="true" royKey="#{etapa.id}"
            rows="50" paginator="true"
            paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
            rowsPerPageTemplate="10,25,50,100,500" widgetVar="etapasTable"
            paginatorPosition="top" sortBy="#{etapa.id}">
            <f:facet name="header">Etapas</f:facet>
            <p:column headerText="Id" exportable="false">
                <h:outputText value="#{etapa.id}" />
                <f:facet name="footer" style="left">
                    <p:commandButton value="Crear" id="ajax"
                        actionListener="#{etapaMB.buttonCrear}"
                        styleClass="ui-priority-primary" ajax="true" />
                    <p:commandButton value="CSV" styleClass="ui-priority-primary"
                        icon="ui-icon-disk" ajax="false">
                        <p:dataExporter type="csv" target="dataEtapas" fileName="etapas"
                            encoding="Latin1" />
                    </p:commandButton>
                    <p:commandButton value="XLS" styleClass="ui-priority-primary"
                        icon="ui-icon-disk" ajax="false">
                        <p:dataExporter type="xls" target="dataEtapas" fileName="etapas" />
                    </p:commandButton>
                </f:facet>
            </p:column>
            <p:column headerText="Opción" filterBy="#{etapa.opcion}"
                filterMatchMode="exact" onchange="etapasTable.filter()"
                filterOptions="#{etapaMB.opcionOption}">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{etapa.opcion}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText id="modelInputOpcion" value="#{etapa.opcion}"
                            style="width:100%" />
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="Modalidad" filterBy="#{etapa.modalidad}"
                filterMatchMode="exact" onchange="etapasTable.filter()"
                filterOptions="#{etapaMB.modalidadOption}">
                <p:cellEditor>
                    <f:facet name="filter">
                        <p:selectCheckboxMenu label="Modalidad">
                            <f:selectItems value="#{etapaMB.modalidadList}" />
                        </p:selectCheckboxMenu>
                    </f:facet>
                    <f:facet name="output">
                        <h:outputText value="#{etapa.modalidad}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText id="modelInputModalidad" value="#{etapa.modalidad}"
                            style="width:100%" />
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="Etapa" filterBy="#{etapa.etapas}"
                filterMatchMode="exact" onchange="etapasTable.filter()"
                filterOptions="#{etapaMB.etapaOption}">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{etapa.etapas}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText id="modelInputEtapas" value="#{etapa.etapas}"
                            style="width:100%" />
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="Duración">
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{etapa.duracion}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText id="modelInputDuracion" value="#{etapa.duracion}"
                            style="width:100%" />
                    </f:facet>
                </p:cellEditor>
            </p:column>
            <p:column style="width:22px; center" exportable="false">
                <p:rowEditor />

            </p:column>
            <p:column style="width:30px; float:center" exportable="false">
                <p:commandButton icon="ui-icon-trash"
                    actionListener="#{etapaMB.buttonEliminar}" update="@form"
                    oncomplete="PF('etapasTable').filter();" />

            </p:column>
            <p:ajax event="rowEdit" listener="#{etapaMB.buttonGuardar}"
                update=":form:msgs" process="@all" />
            <p:ajax event="rowEditCancel" listener="#{etapaMB.onRowCancel}"
                update=":form:msgs" />

        </p:dataTable>

我加载模型的bean

    public DataModel<Etapa> getDataEtapas() {
    return new ListDataModel<Etapa>(new ArrayList<Etapa>(Etapas.values()));
}

谢谢。

0 个答案:

没有答案