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

152
Views
Uso de la extensión Seleccionar y la selección de filas del lado del servidor en una aplicación brillante con tabla de datos

He estado trabajando en una aplicación brillante de R que permite a los usuarios buscar algunos datos. Se muestra en una tabla y quiero que esta tabla tenga dos funcionalidades:

  • Debería permitir al usuario seleccionar filas de la tabla manualmente haciendo clic y usando los botones para seleccionar todo y anular la selección de todo.
  • Debería permitir al usuario seleccionar filas de la tabla mediante el uso de algunas consultas (¡sin filtrarlas! Las filas no seleccionadas aún deberían mostrarse).

Se supone que estas funcionalidades funcionan simultáneamente; por ejemplo, el usuario puede consultar la tabla al proporcionar algunas condiciones, seleccionar todas las filas que las cumplan usando algún botón y luego agregar más filas a la selección haciendo clic en ellas manualmente.

La primera funcionalidad se puede obtener fácilmente usando la extensión Select para DT, y funciona perfectamente bien.

La segunda funcionalidad se puede implementar tomando algunas entradas del usuario y seleccionando las filas apropiadas mediante el uso de objetos dataTableProxy y la función selectRows en el lado del servidor, y funciona perfectamente bien.

El problema surge cuando intento combinarlos. Sé que no es recomendable, la consola muestra advertencias al mezclarlos, pero simplemente me pareció la solución más rápida.

Aquí hay un código simplificado:

 library(shiny) library(DT) ui <- fluidPage( dataTableOutput("my_table"), actionButton("my_button", "Select some rows") ) server <- function(input, output, session) { data(iris) output[["my_table"]] <- renderDataTable( iris, # extensions = c("Select", "Buttons"), # options = list( # dom = 'Brtip', # buttons = c("selectAll", "selectNone"), ## select = list(style = "multi+shift", items = "row") # ), # server = FALSE, ## selection = "none" ) proxy <- dataTableProxy("my_table") observeEvent(input[["my_button"]], { proxy %>% selectRows(1:5) }) } shinyApp(ui, server)

Las líneas que están comentadas activan los botones de selección y reemplazan la selección integrada predeterminada para DT con la API de selección implementada en la extensión Select , lo que hace que la selección de proxy en el lado del servidor sea imposible. Puedo dejar comentadas esas líneas doblemente comentadas y parece funcionar, pero solo de un vistazo. En realidad, la selección predeterminada de brillantes "pierde" con la selección de extensión, lo que puede demostrarse por el hecho de que, aunque algunas filas se muestran como seleccionadas, el botón "Deseleccionar todo" está inactivo.

Mi pregunta es: ¿cuál es la forma más fácil de combinar esos dos enfoques? ¿Hay alguna opción para la extensión "Seleccionar" que me falta que permitiría la selección por proxy brillante? Podría resolverlo implementando manualmente algunas devoluciones de llamada para la tabla en lugar de usar un proxy, pero parece mucho trabajo y agradecería cualquier sugerencia sobre cómo evitarlo.

about 4 years ago · Juan Pablo Isaza
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!