R DT通过为行分配“子”和“父”类来扩展/折叠嵌套行

k.c*_*ney 5 javascript r shiny dt

我正在尝试通过向要成为子行的行分配一个“子”类,向要成为父行的行分配一个“父”类,从而在R数据表中实现可折叠的子行。R数据表中是否可能有子行,而这些子行是数据表中的实际行?我找到了一个示例,该示例基于R数据表的行中的数据为每行定义子行:http : //rstudio.github.io/DT/002-rowdetails.html。但是,我希望仅显示数据中的“总计”行,并使所有非总计行成为子行。子行将具有与父行相同的列和格式。

我找到了JS的解决方案,但是我很难通过回调使它正常工作。

这是JS解决方案: 用嵌套行扩展/折叠表行

这是我用R中的一个基本示例进行的尝试:

library(DT)
datatable(
  cbind(' ' = '⊕', mtcars), escape = -2,
  options = list(
   rowCallback=DT::JS('function(row,data,index){
       if(index%2==1) {$("td",row).addClass("child")};
       if(index%2==0) {$("td",row).addClass("parent")};
    }'),
    columnDefs = list(
      list(visible = FALSE, targets = c(0, 2, 3)),
      list(orderable = FALSE, className = 'details-control', targets = 1)
    )
  ),

  callback = JS("

    function getChildren($row) {
        var children = [];
        while($row.next().hasClass('child')) {
             children.push($row.next());
             $row = $row.next();
        }            
        return children;
    }        

    $('.parent').on('click', function() {

        var children = getChildren($(this));
        $.each(children, function() {
            $(this).toggle();
        })
    });"



))
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!