2016-10-11 3 views
0

С помощью Shiny datatables можно выбрать столбцы таблицы, щелкнув соответствующие ячейки таблицы, а затем выделенные столбцы выделены. Но в случае, если слишком много столбцов, есть ли способ, которым можно просто щелкнуть кнопку, чтобы выбрать все столбцы и выделить их? Таким образом можно отменить выбор некоторых столбцов, щелкнув соответствующие ячейки.Выделить все столбцы с помощью блестящих данных datatables


P.S. мое текущее решение: я сделал флажок, указывающий, что пользователь может инвертировать выбор столбцов. Когда флажок установлен, выделенные столбцы будут исключены из выбранного набора, а не включены.

ответ

1

Если я правильно понял, это может быть способ сделать это.

ui.R

library(shiny) 
    library(DT) 


    shinyUI(fluidPage(


     titlePanel("Column Selection"), 
     fluidRow(
       actionButton("selectCols", "Select all columns"), 
       DT::dataTableOutput('tbl'), 
       verbatimTextOutput("selectedColums") 
     ) 

    )) 

server.R

library(shiny) 
    library(DT) 

    shinyServer(function(input, output) { 


      irisTable <- reactive({ 
        if (input$selectCols > 0) { 
          datatable(iris, selection = list(target = 'column', selected = c(0,1,2,3,4,5))) 
        } else { 
          datatable(iris, selection = list(target = 'column')) 
        } 
      }) 

      output$tbl = DT::renderDataTable(
        irisTable()) 
      output$selectedColums <- renderPrint({ 
        input$tbl_columns_selected 
      }) 

    }) 
+0

Спасибо. Я думаю, это сработает. Но я хотел бы также выделить выбранные столбцы. Это может потребоваться дополнительная работа с Javascript. Таким образом, я также могу щелкнуть выбранный столбец, чтобы отменить его. – athlonshi

+0

Когда вы нажимаете кнопку, все столбцы выбраны и выделены серым цветом. После выбора всех столбцов щелчок на любом одном столбце отменяет выбор и делает его белым. Вы хотели другого поведения? –

+0

Хорошо, думаю, теперь я понимаю. Да, это то, чего я хочу. Еще раз спасибо. – athlonshi

Смежные вопросы