r-在Shiny应用程序的excelR小部件中隐藏索引列(行号)



我用R制作了一个Shiny应用程序,向用户显示一个类似Excel的网格。excelR包是JS包JSpreadsheet的包装器。此程序包自动将行号放在最左边的列中。我不想要它们。

通过深入研究JavaScript,我终于能够找到如何使用actionButton通过发送JS命令来删除行号:

library(shiny)
library(excelR)
library(shinyjs)
jsCode <- "shinyjs.hideindex = function(params) {document.getElementById('table').jexcel.hideIndex();}"
ui <- fluidPage(
useShinyjs(),
extendShinyjs(text = jsCode, functions = "hideindex"),
excelOutput("table", height = 175),
actionButton('hide_button', 'Hide Index Column')
)
server <- function(input, output, session){
output$table <- renderExcel({
excelTable(data = head(iris),
columns = data.frame(title = names(iris),
type = c('numeric', 'numeric', 'numeric', 'numeric', 'text')))
})
onclick("hide_button", js$hideindex())
}
shinyApp(ui, server)

但我真的很想让表在没有索引列(行号(的情况下自动呈现。我尝试使用observeEvents(以及许多其他东西(来观察input$table中的更改,但在编辑表之前,似乎并没有创建输入。

我修改了您的示例,使其更加离散,但它将在每次有人修改您的应用程序时运行(因为observe()函数(。

library(shiny)
library(excelR)
library(shinyjs)
jsCode <- "shinyjs.hideindex = function(params) {document.getElementById('table').jexcel.hideIndex();}"
ui <- fluidPage(
useShinyjs(),
extendShinyjs(text = jsCode, functions = "hideindex"),
excelOutput("table", height = 175),
hidden(actionButton('hide_button', 'Hide Index Column')) # Hide from start 
)
server <- function(input, output, session){
output$table <- renderExcel({
excelTable(data = head(iris),
columns = data.frame(title = names(iris),
type = c('numeric', 'numeric', 'numeric', 'numeric', 'text')))
})

observe({ # Automatic click on it even if hidden
click("hide_button")
})
onclick("hide_button", js$hideindex())  
}
shinyApp(ui, server)

只在应用程序启动时运行它可能会更好,但我还没有解决它。

相关内容

  • 没有找到相关文章

最新更新