Mam stronę serwera RStudio Shiny z DataTables i mam TableTools i ColReorder pracuje w poniższym przykładzie, ale ColVis (Show/hide columns
przycisk) nie zachowuje się w taki sam sposób, jak przykładowo w http://datatables.net/extensions/colvis/:R błyszczące DataTables zachowanie ColVis
Po kliknięciu przycisku Show/hide columns
lista zostanie pomieszana z wartościami w tabeli pod spodem i nie mogę spowodować, że lista zniknie, klikając ponownie przycisk lub klikając w innym miejscu na stronie (ponownie zachowuje się przykład na stronie z danymi; prawidłowo).
Również jestem mylić temat korzystania sDom
zamówić różne elementy w tabeli. Chciałbym, aby przycisk Show/hide columns
znajdował się w prawym górnym rogu, a nie w lewym górnym rogu. Nie jestem również pewien, jak zamówić różne elementy w tabeli sDom
, aby po zmianie kolejności kolumn zapisanie w CSV/Excel lub ukrycie pewnej kolumny da mi nowy układ tabeli zamiast oryginalnego.
Wszelkie pomysły?
ui.R
shinyUI(pageWithSidebar(
h1('Diamonds DataTable with TableTools'),
tagList(
singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables/1.9.4/jquery.dataTables.min.js',type='text/javascript'))),
singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/js/TableTools.min.js',type='text/javascript'))),
singleton(tags$head(tags$script(src='//cdn.datatables.net/colreorder/1.1.1/js/dataTables.colReorder.min.js',type='text/javascript'))),
singleton(tags$head(tags$script(src='//cdn.datatables.net/colvis/1.1.0/js/dataTables.colVis.min.js',type='text/javascript'))),
singleton(tags$head(tags$script(src='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/js/ZeroClipboard.min.js',type='text/javascript'))),
singleton(tags$head(tags$link(href='//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/css/TableTools.min.css',rel='stylesheet',type='text/css'))),
singleton(tags$script(HTML("if (window.innerHeight < 400) alert('Screen too small');")))
),
dataTableOutput("mytable")
)
)
server.R
shinyServer(function(input, output, session) {
output$mytable = renderDataTable({
diamonds[,1:6]
}, options = list(
"sDom" = 'RMDCT<"clear">lfrtip',
"oTableTools" = list(
"sSwfPath" = "//cdnjs.cloudflare.com/ajax/libs/datatables-tabletools/2.1.5/swf/copy_csv_xls.swf",
"aButtons" = list(
"copy",
"print",
list("sExtends" = "collection",
"sButtonText" = "Save",
"aButtons" = c("csv","xls")
)
)
)
)
)
})
#
Ponadto, istnieje problem z kolumny sortowania i kolumny zmienić kolejność: jeśli jeden sortuje wtedy zmieniać kolejność kolumn i sortuje ponownie nagłówki kolumn są odwracane. Na przykład posortuj według głębokości kolumny, następnie przesuń kolumnę 1 w lewo, a następnie kliknij ponownie nagłówek, aby posortować, teraz mamy głębię nagłówka z treścią z niewłaściwej kolumny. Patrz zrzut:
Trzeba opcję 'sDom' tylko dla tej biblioteki . THEN widżet powinien wyświetlać się poprawnie. Jednak widget zmienia obiekty w DOM, więc prawdopodobnie będziesz musiał włączyć wywołania funkcji 'Shiny.unbindAll()' i 'Shiny.bindAll()' zobacz https://groups.google.com/forum/#!msg/shiny- dyskutować/IE6aQfKXd1I/M_IpbLUUG9AJ – jdharrison
gdzie powinny być wykonywane wywołania 'Shiny.unbindAll()' i 'Shiny.bindAll()' względem tabeli? – 719016