如何在R Shiny的DataTable中将列右对齐?

4

我从这篇文章中了解到,我们应该定义一个alignRight的CSS类,并将其设置为所需的对齐方式:

# ui.R
sidebarLayout(...,
    mainPanel(
        tags$head(
            tags$style(".alignRight { align: right; }", media = "all", type = "text/css")
        ),
        ...     # content with call to dataTableOutput("myTable")
    )
)

然后,在创建 DataTable 时,使用 aoColumnDefs 选项将所需列的类设置为 alignRight

# server.R
shinyServer(
    function(input, output) {...
        output$myTable <- renderDataTable(...,
            options = list(
                aoColumnDefs = '[{"aTargets": [7, 9, 10], "sClass": "alignRight"}]'
            )
        )
    }
)

然而,这对我的DataTable没有影响,所有列仍然左对齐。我认为这只是一个简单的对齐问题,应该可以很容易地解决,但经过多个小时的研究,显然并非如此。如有任何想法,请不吝赐教。
2个回答

8
以下内容没有自定义类的定义也可以正常工作:
option=list(columnDefs=list(list(targets=3:5, class="dt-right")))

5

This:

library(shiny)

runApp(list(
  ui = basicPage(
    tags$head(tags$style(".table .alignRight {color: blue; text-align:right;}")),
    h2('The mtcars data'),
    dataTableOutput('mytable')
  ),
  server = function(input, output) {
    output$mytable = renderDataTable({
      mtcars
    }, options =list(aoColumnDefs = list(list(sClass="alignRight",aTargets=c(list(3),list(4),list(5))))  ))
  }
))

对我有用,也可能帮助你正确地为你的情况建模CSS。 我只使用了blue,因为它有助于显示td格式的其他部分是否工作,即使其中一个部分可能不起作用。


太好了 - 谢谢!但是,列标题也变成了右对齐,并与小的排序图标冲突 - 有没有办法解决这个问题?干杯。 - mchen
可能需要稍微调整一下CSS。我忘记DataTables默认是否使用thead,但如果它们使用的话,只需添加一个处理此情况的CSS即可。稍后我会试一下看能否解决这个问题。 - hrbrmstr
新格式是如何工作的?这似乎不起作用。选项=列表(columnDefs = 列表(列表(class="right",aTargets=c(列表(3),列表(4),列表(5)))))) - mindlessgreen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接