我的数据表有问题。排序没有呈现,但它似乎有点在后台工作。我没有按顺序看到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()));
}
谢谢。