Richfaces tabla de datos - añadir una nueva fila sin rerendering toda la tabla de datos en el lado del cliente
-
13-10-2019 - |
Pregunta
La nueva fila se puede agregar a la colección del lado del servidor asociado a un evento de acción de un botón de comando o un enlace de comandos, y la fila recién agregada se puede visualizar en el cliente si toda la tabla es re- dictada .
¿Es posible mostrar la fila que acaba de agregar en el lado del cliente sin necesidad de actualizar toda la tabla de datos con las teclas prestación parcial con la ayuda de AjaxKeys o algo?
Gracias de antemano por cualquier ayuda:)
Solución
Hay que regenere tabla de datos entera si va a agregar una nueva fila. AjaxKeys pueden ser útiles si desea regenere las columnas existentes.
Otros consejos
Me interesa también conocer una respuesta para su pregunta, Puedo lograr que el uso de JavaScript tradicional, pero cuando se utiliza rica:. Tabla de datos no puedo añadir nuevas filas en el cliente
Pero hizo que el uso de ajax llamadas a las funciones del servidor, esta función añadir nueva fila vacía a la Lista dataTable y hacen los ricos:. Tabla de datos de nuevo
mi página de XHTML
<rich:column>
<f:facet name="header"><h:outputLabel value="#{msgs.notes}" style="font-size:15px;"/> </f:facet>
<h:inputText value="#{line.notes}" >
<a4j:ajax event="blur"
execute="datatable"
render="datatable"
immediate="true"
listener="#{saleBacking.addNewLineInDataTable}"
oncomplete="document.getElementById('myform:datatable:#{saleBacking.view_no_counter-1}:line').focus();"/>
</h:inputText>
</rich:column>
y en el grano maneged
public void addNewLineInDataTable(AjaxBehaviorEvent event)
{
SaleLine saleLine = new SaleLine();
saleLine.setId(salesLineslist.isEmpty() ? 1 : salesLineslist.get(salesLineslist.size() - 1).getId() + 1);
salesLineslist.add(saleLine);
saleLine = new SaleLine();
saleLine = new SaleLine();
saleLine.setSaleId(sale);
saleLine.setViewNo(++view_no_counter);
saleLine.setDiscount(0d);
saleLine.setItemPrice(0d);
salesLines.add(saleLine);
}