2016-05-25 2 views
1

Angenommen, ich die folgende glänzend App haben:Spaltenbearbeitung in Rhnsontable deaktivieren?

library(shiny) 
library(rhandsontable) 

ui <- shinyUI(fluidPage(
    titlePanel("Handsontable"), 
    sidebarLayout(
    sidebarPanel(
     helpText("Handsontable demo output. Column add/delete does work ", 
       "for tables with defined column properties, including type."), 
     radioButtons("useType", "Use Data Types", c("TRUE", "FALSE")) 
    ), 
    mainPanel(
     rHandsontableOutput("hot", width = 350) 
    ) 
) 
)) 

server <- shinyServer(function(input, output, session) { 
    values = reactiveValues() 

    data = reactive({ 
    if (!is.null(input$hot)) { 
     DF = hot_to_r(input$hot) 
    } else { 
     if (is.null(values[["DF"]])) 
     DF = data.frame(val = 1:10, bool = TRUE, nm = LETTERS[1:10], 
         dt = seq(from = Sys.Date(), by = "days", length.out = 10), 
         stringsAsFactors = F) 
     else 
     DF = values[["DF"]] 
    } 


    values[["DF"]] = DF 
    DF 
    }) 

    output$hot <- renderRHandsontable({ 
    DF = data() 
    if (!is.null(DF)) 
     rhandsontable(DF, useTypes = as.logical(input$useType), stretchH = "all") 
    }) 
}) 

# Run the application 
shinyApp(ui = ui, server = server) 

Wie kann ich für die ersten beiden Spalten deaktivieren zu bearbeiten?

Antwort

1

Der ganze Tisch und einzelne Spalten können auf readonly, um den Benutzer Änderungen vornehmen zu verhindern. (http://jrowen.github.io/rhandsontable/#read-only)

library(shiny) 
library(rhandsontable) 

ui <- shinyUI(fluidPage(
    titlePanel("Handsontable"), 
    sidebarLayout(
    sidebarPanel(
     helpText("Handsontable demo output. Column add/delete does work ", 
       "for tables with defined column properties, including type."), 
     radioButtons("useType", "Use Data Types", c("TRUE", "FALSE")) 
    ), 
    mainPanel(
     rHandsontableOutput("hot", width = 350) 
    ) 
) 
)) 

server <- shinyServer(function(input, output, session) { 
    values = reactiveValues() 

    data = reactive({ 
    if (!is.null(input$hot)) { 
     DF = hot_to_r(input$hot) 
    } else { 
     if (is.null(values[["DF"]])) 
     DF = data.frame(val = 1:10, bool = TRUE, nm = LETTERS[1:10], 
         dt = seq(from = Sys.Date(), by = "days", length.out = 10), 
         stringsAsFactors = F) 
     else 
     DF = values[["DF"]] 
    } 


    values[["DF"]] = DF 
    DF 
    }) 

    output$hot <- renderRHandsontable({ 
    DF = data() 
    if (!is.null(DF)) 
     rhandsontable(DF, useTypes = as.logical(input$useType), stretchH = "all") %>% 
     hot_col("val", readOnly = TRUE) %>% 
     hot_col("bool",readOnly = TRUE) 
    }) 
}) 

# Run the application 
shinyApp(ui = ui, server = server)