DataTable TableTools Extension Implementation in Shiny

∥☆過路亽.° 提交于 2019-12-02 09:50:57

问题


I've got a dataTabe for which I'm trying to implement tableTools in order to export the records in csv format. However, when the filtered data is more than 1 page worth of records, as in the example provided here, the export button doesn't pick up the records on the 2nd page and onwards and it only exports the 1st page.

From my research, it appears that oSelectorOps:{ page: 'all' } option should do the trick. However I couldn't get it to work. If you run the code below and hit the export button, it will result in a csv file with only 100 rows (i.e. the first page) and not the entire table. Please advise if my syntax is incorrect or if there's a better alternative to attain this.

Please note that I don't want to use the downloadHandler because I would like to be able to export the data when filtered using the DataTable filter fields, at the bottom of the table.

Please click here and here to help with similar questions.

Here's my reproducible example:

#Load required packages
require(shiny)

#Create a dataframe
df <- data.frame(random=1:160)

server <- function(input,output,session){

    #Display df using DataTable and apply desired options
    output$display <- renderDataTable({df}, 
           option=list(pageLength=100,
                       "dom" = 'T<"clear">lfrtip',
                       "tableTools" = list(
                        "sSwfPath" = "//cdn.datatables.net/tabletools/2.2.3/swf/copy_csv_xls_pdf.swf",
                        "aButtons" = list(list("sExtends" = "csv","oSelectorOpts"=list("page"="all"),"sButtonText" = "Export","aButtons" ="csv")))         
       )

   )
}

ui <- shinyUI(fluidPage(

    #Add a title
    h1('Testing TableTools'),

    #Add required JS libraries
    tagList(
        singleton(tags$head(tags$script(src='//cdn.datatables.net/1.10.4/js/jquery.dataTables.min.js',type='text/javascript'))),
        singleton(tags$head(tags$script(src='//cdn.datatables.net/tabletools/2.2.3/js/dataTables.tableTools.min.js',type='text/javascript'))),
        singleton(tags$head(tags$link(href='//cdn.datatables.net/tabletools/2.2.3/css/dataTables.tableTools.css',rel='stylesheet',type='text/css')))
            ),


        mainPanel(
           #Display results
           dataTableOutput('display')
                 )      


))

shinyApp(ui = ui, server = server)

回答1:


Try this out:

{
sExtends: "csv",
"oSelectorOpts": {
    page: 'all',
    filter:'applied'
    },
"mColumns": "visible"
},


来源:https://stackoverflow.com/questions/27649481/datatable-tabletools-extension-implementation-in-shiny

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!