R Shiny DT呈现文本和输入,没有换行符



我试图在Shiny DT中呈现任何类型的R Shiny输入,但我想避免断行。如果我用shinyInput函数连接一些文本和html标签,文本和输入都会被呈现,但是在输入前后会出现换行。

我认为根本原因是这个div标签,但谷歌似乎添加style="display:inline;"CSS代码应该解决这个问题,但它没有,它甚至打破了宽度的定义。

你知道如何在同一单元格上获得文本之前,div和之后的文本吗?

下面有一些代码可以使用。

library(DT)
ui <- basicPage(
h2("The mtcars data"),
DT::dataTableOutput("mytable")
)
server <- function(input, output) {

shinyInput <- function(FUN, len, id, ...) {
inputs <- character(len)
for (i in seq_len(len)) {
inputs[i] <- as.character(FUN(paste0(id, i), ...))
}
inputs
}

mtcarsx <- data.frame(mtcars, newvar=
paste0(
"tex before "
,shinyInput(checkboxInput,nrow(mtcars),"mychbx",label="",value=FALSE,width=NULL),
" text after"))

output$mytable = DT::renderDataTable({
DT::datatable(mtcarsx, 
escape = FALSE, 
selection = 'none', 
rownames = FALSE, 
extensions = 'RowGroup', 
options = list(searching = FALSE, 
ordering  = FALSE,
rowGroup = list(dataSrc=c(1)),
columnDefs = list(list(visible=FALSE, targets=c(1)))
))
})

}
shinyApp(ui, server)

您是对的,您需要更改将复选框元素包装为display:inline的div。你说这不能解决它,因为它打破了宽度定义。也许我遗漏了什么?我没有看到宽度栏有变化。

tags$style("
#mytable tr td div.form-group {
display: inline;
}
#mytable tr td div.checkbox {
display: inline; 
}
#mytable tr td div.checkbox label {
padding: 0;
}
#mytable tr td div.checkbox input {
position: relative;
margin: 0;
}")

如果前面和后面的文本是恒定的,您可以使用css伪类afterbefore来添加该内容。

最新更新