【问题标题】:How to render a dataTable with definite row height?如何呈现具有确定行高的数据表?
【发布时间】:2017-02-23 14:08:05
【问题描述】:

我已经为这样的任务苦苦挣扎了几个小时: 在 R Shiny 中,我需要显示一个包含单列整数的表格,其中 行之间的间距明确(相对较大)

renderTable() 函数中有 spacing 参数,但即使将其设置为最大值 'l' 仍然不足以达到我的目的。

我尝试使用 xtable 并考虑到来自 Adjust row height xtable R 的示例,但没有结果(我不知道 CSS)。

我在网上找到的最自然的方法是使用DT 包和Scroller 扩展,但下面的代码仍然没有结果

ui.R:

fluidPage(
  sidebarLayout(
    sidebarPanel(
        dataTableOutput('dtable', width = '50%') # argument 'height' does not work here
        ),
    mainPanel()
  )
)

服务器.R:

library(shiny)
library(DT)

function(input, output) {
output$dtable <- DT::renderDataTable({
  data.frame(SSD = c(2, 17, 19, 35))
},
extensions = 'Scroller',
options = list(
  dom = 't',
  ordering = FALSE,
  scroller = list(rowHeight = 100)
)
)
}

它的输出只给出列名(出了什么问题??),但没有Scroller 扩展,它会显示预期的表格 - 当然间距太小......

【问题讨论】:

    标签: r datatable shiny dt


    【解决方案1】:

    您想使用rowCallback 选项并为每一行附加一个样式:

    服务器.R

    library(shiny)
    library(DT)
    
    function(input, output) {
        output$dtable <- DT::renderDataTable({
            data.frame(SSD = c(2, 17, 19, 35))
        },
        options = list(
            dom = 't',
            ordering = FALSE,
            rowCallback = JS("function(r,d) {$(r).attr('height', '100px')}")
        )
        )
    }
    

    请注意,随着行数的增加,这可能会导致渲染时间增加

    【讨论】:

    • 它完全符合我的要求。谢谢GGamba!无论如何,我还是很好奇,rowHeight 选项是否可以产生与其名称相符的效果?也许我的语法有问题?你知道吗?
    • Scroller 扩展有助于通过仅渲染数据表的可见部分来缩短渲染时间。为此,它必须知道行的高度,以计算要渲染的行数。它不会影响行的实际高度,而是用于了解“我在此视口中渲染了多少行?”
    猜你喜欢
    • 1970-01-01
    • 2012-02-22
    • 2020-03-11
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多