Saber que columna se edita
Last updated
Was this helpful?
Last updated
Was this helpful?
Para conocer que columna se edita de un datatable
En el ejemplo podemos editar la columna de vehiculos y la columna pasajeros
<p:outputLabel value="#{msg['field.idtipovehiculo']}"/>
<p:dataTable id="datatableTipoVehiculo" var="item" value="#{solicitudAdministrativoController.tipoVehiculoCantidadBeansList}"
editable="true" editMode="cell" widgetVar="cellCars">
<f:facet name="header">
</f:facet>
<p:ajax event="cellEdit" listener="#{solicitudAdministrativoController.onCellEdit}"
update=":form:msg, :form:datatableTipoVehiculo,:form:datatableDisponibles, :form:totalTipoVehiculoCantidad" />
<p:column headerText="#{msg['field.idtipovehiculo']}">
<h:outputText value="#{item.tipovehiculo.idtipovehiculo}" />
</p:column>
<p:column id="cantidadcoledit" headerText="#{msg['field.vehiculos']}" style="width:150px">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{item.cantidad}" /></f:facet>
<f:facet name="input"><p:inputText value="#{item.cantidad}" style="width:96%" label="#{msg['field.buses']}"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="#{msg['field.maximo']}" style="width:150px">
<h:outputText value="#{item.maximo}" />
</p:column>
<p:column id="pasajeroscoledit" headerText="#{msg['field.pasajeros']}" style="width:150px">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{item.pasajeros}" /></f:facet>
<f:facet name="input"><p:inputText value="#{item.pasajeros}" style="width:96%" label="#{msg['field.pasajeros']}"/></f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>
En en controller controlamos la columna que se edito
Usamos
UIColumn col = (UIColumn) event.getColumn();
El metodo permite conocer el nombre de la columna
col.getHeaderText().toUpperCase()
Que fue definido con textHeader
<p:column headerText="#{msg['field.vehiculos']}" style="width:150px">
public void onCellEdit(CellEditEvent event) {
Object oldValue = event.getOldValue();
Object newValue = event.getNewValue();
int alteredRow = event.getRowIndex();
//Obtiene el encabezado de la columna que se edita la propiedad headerText
UIColumn col = (UIColumn) event.getColumn();
Integer v = (Integer) newValue;
switch (col.getHeaderText().toUpperCase()) {
case "VEHICULOS":
if (v < 0 || v > tipoVehiculoCantidadBeansList.get(alteredRow).getMaximo()) {
tipoVehiculoCantidadBeansList.get(alteredRow).setCantidad(0);
}
break;
case "PASAJEROS":
if (tipoVehiculoCantidadBeansList.get(alteredRow).getPasajeros() < 0) {
tipoVehiculoCantidadBeansList.get(alteredRow).setPasajeros(0);
}
break;
}
changeDaysViewAvailable();
if (newValue != null && !newValue.equals(oldValue)) {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Cell Changed", "Old: " + oldValue + ", New:" + newValue);
FacesContext.getCurrentInstance().addMessage(null, msg);
}
} // </editor-fold>