2015-12-31 4 views
1

У меня есть DataTable, связанный/созданный с помощью DT::datatable и отображаемый через DT::renderDataTable.Запрос состояний/свойств данных, встроенных в блестящее приложение

Как я могу запросить состояния/свойства datatable, чтобы использовать их для разработки компонентов реактивного интерфейса?

Для конкретного примера: как запросить значение свойства iDisplayLength, выбранного пользователем (AFAIU, который определяет количество элементов/строк)?

Я хотел бы использовать это значение следующим образом (псевдокод):

if (iDisplayLength != "All") { 
    do not enable vertical scrolling 
} else { 
    enable vertical scrolling 
} 

Из-за вертикальной прокруткой части, вопрос несколько связан с this one, где вы сможете найти конкретный пример.

ответ

1

Вы можете получить доступ к длине страниц, выбранных пользователем, с помощью input$tableId_state$length. Для этого вам необходимо установить stateSave для TRUE, см. here, раздел 2.2.

Вот минимальный пример:

library(shiny) 
shinyApp(
    ui = fluidPage(textOutput("pageLength"), 
    DT::dataTableOutput('tbl')) 
    , 
    server = function(input, output) { 
    output$tbl = DT::renderDataTable(
     iris,options=list(stateSave=TRUE) 
    ) 
    output$pageLength = renderText(paste("Lenght of the pages:",input$tbl_state$length)) 
    }) 
    } 
) 

Если вам нужно это значение для чего-то другого, вы всегда можете хранить его в реактивном значения.

+0

Отлично, спасибо за указатель и пример! – Rappster