2017-05-09 1 views
2

사용자가 데이터 세트 페이지 매김의 페이지를 변경할 때마다 입력 값을 변경해야합니다.데이터 테이블 페이지 매김 이벤트를 관찰하십시오.

나는 observeEvent을 사용해 보았지만 작동하지 않습니다.

UI

fluidRow(
    column(10, 
     "" 
), 
    column(2,    
     textInput("inText", "Input text 2", value = "Default text") 
), 
    column(12, 
     dataTableOutput('table') 
) 
) 

서버

observeEvent(input$table, { 
    updateTextInput(session, "inText", value = paste("New text",0)) 
}) 

당신이 날 도울 수 있기를 바랍니다.

+0

은 다른 질문에 관련 : 그래서 인해 입력 필드 또는 페이지 매김 변화는 매김 버튼에 의해 트리거 "보통"또한이 될 수 있습니까? – BigDataScientist

+0

내가하려는 것은 페이지 매김 버튼과 입력에 의해 페이지 매김이 정상적으로 바뀔 수 있다는 것입니다. 그러나 정상적으로 변경하면 입력을 새 페이지로 새로 고치기를 원합니다. – JFernandez

+0

OK, 페이지 매김 정보를 포함하는'input $ table_state'를 사용해야합니다 ... – BigDataScientist

답변

1

표에 나와있는 표의 ID가 table으로 가정하면 다음을 사용할 수 있습니다. input$table_state$start/input$table_state$length + 1 다음과 같은 완전한 예에서

:

library(DT) 
library(shiny) 
app <- shinyApp(
    ui = fluidPage(
    tags$head(
     # hides the default search functionality 
     tags$style(
     HTML(".dataTables_filter, .dataTables_info { display: none; }") 
    ) 
    ), 
    fluidRow(
     column(10, 
      "" 
    ), 
     column(2,    
      # adding new page filter 
      uiOutput("pageFilter") 
    ), 
     column(12, 
      dataTableOutput('table') 
    ) 
    ) 
), 
    server = function(input, output) { 

    output$pageFilter <- renderUI({ 
     val <- input$table_state$start/input$table_state$length + 1 
     numericInput("page", "Page", val, min = 1) 
    }) 

    output$table <- DT::renderDataTable({ 
     iris 
    }, options = list(pageLength = 5, stateSave = TRUE)) 

    # using new page filter 
    observeEvent(input$page, { 
     dataTableProxy("table") %>% selectPage(input$page) 
    }) 
    } 
) 

runApp(app, launch.browser = TRUE)