Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

280
Views
PrimeFaces p:centrarse en p:elemento dataTable

Actualmente estoy tratando de configurar una tabla de datos editable que usa ajax para mantener el enfoque cuando un usuario edita una celda usando JavaScript o un bean de respaldo, porque cuando se produce una edición de celda, será necesario actualizar los datos en otras partes de la tabla, por lo tanto la tabla debe volver a dibujarse, desenfocando el elemento enfocado. Actualmente estoy tratando de hacer esto usando ap:focus, usando un oyente CellEditEvent para obtener la identificación del componente. Desafortunadamente, asignar a la variable la identificación del componente enfocado no cambia qué elemento está enfocado en la página.

Aquí está el HTML relevante:

 <h:form id="addForm"> <p:focus id="focusID" for="#{beanView.focus}" /> <h:panelGroup id="entrypg"> <p:commandButton id="updateButton" widgetVar="updateButton" update="addForm:myDT" /> <p:dataTable id="myDT" widgetVar="myDT" var="iter" value="#{beanView.valList}" editable="true" editMode="cell"> <p:ajax event="cellEdit" listener="#{beanView.onCellEdit}" oncomplete="$('#addForm\\\:updateButton').click();"/> <p:column headerText="X"> <p:cellEditor> <f:facet name="output"> <h:outputText value="#{iter.x}" /> </f:facet> <f:facet name="input"> <p:inputText value="#{iter.x}" /> </f:facet> </p:cellEditor> </p:column> </p:dataTable> </h:panelGroup> </h:form>

Y el controlador de edición de celdas en la vista:

 public void onCellEdit(CellEditEvent edit) { if(edit.getNewValue() != null) { focus = edit.getColumn().getChildren().get(0).getClientId(); } }

También estoy abierto a mejores formas de hacer esto, ya que no estoy seguro de si p:focus está diseñado para este propósito.

¡Gracias!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Ok, lo he hecho funcionar usando widgets:

 function forceFocus(index) { var widget = PF('myDT'); widget.showCellEditor($('[role="gridcell"].ui-editable-column:eq(' + index + ')')); }

El showCellEditor hace casi exactamente lo que necesito, resalta una celda y la enfoca, lo que permite la edición inmediata. También parece conservar el enfoque entre llamadas ajax.

Se necesitaría más lógica si quisiera hacer esto en una tabla con más de 1 columna editable.

Editar: Ok, parece que no está almacenando el foco entre los redibujados de la tabla, pero debería ser factible tomar el foco antes de que la tabla se vuelva a dibujar y restaurarlo después de que se vuelva a dibujar con la función anterior

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!