2016-02-25 18 views
9

Chciałbym usunąć opcję "wyszukiwanie globalne" z mojej aplikacji, ale pozostaw opcję "wyszukiwanie kolumny". Jakieś pomysły? Próbowałem różnych parametrów, takich jak searching=FALSE, filtering='none' ... Nic z tego nie działa poprawnie.Usuń opcję "szukaj", ale pozostaw opcję "kolumny wyszukiwania"

Mój kod:

server.R:

library("shiny") 
library("DT") 

data(iris) 

shinyServer(function(input, output) { 

    output$tabelka <- DT::renderDataTable({ 

     datatable(iris, filter="top", selection="multiple", escape=FALSE) 

    }) 

}) 

ui.R

library("shiny") 
library("DT") 

shinyUI(fluidPage(

    DT::dataTableOutput("tabelka") 

)) 

I obraz, który pomaga zrozumieć mój problem:

enter image description here

+0

Zobacz [tutaj] (http://rstudio.github.io/DT/), sekcja 2.5. –

+0

@ danas.zuokas, Przeczytałem ten podręcznik, ale mi to nie pomogło. Czy możesz podać mi bardziej konkretną wskazówkę? – Marta

+0

Cóż, sam nie mam odpowiedzi, sądziłem, że doprowadzi cię to we właściwym kierunku. Rozumiem, że możesz zbudować tabelę, jak chcesz, używając niestandardowego kontenera. Proponuję odtworzyć przykład i dostosować go do twoich potrzeb. –

Odpowiedz

16

Opcje DT należy przekazać jako listę. Ponadto, za pomocą zmiennej inicjalizacyjnej sDom można określić, w którym miejscu znajdują się elementy sterujące DOM. Standardowa konfiguracja wygląda następująco:

datatable(iris, filter="top", selection="multiple", escape=FALSE, 
     options = list(sDom = '<"top">flrt<"bottom">ip')) 

Składnia jest nieco ekscentryczny, ale w zasadzie powyżej mówi, że opcje K, L, R i T mają być umieszczone w górnej div z I i P opcji dolny div. Więcej szczegółowych objaśnień znajduje się w dokumentacji pod numerem http://legacy.datatables.net/usage/options.

W każdym razie "f" jest opcją "Filtrowanie danych wejściowych" (tzn. Opcja wyszukiwania), a przenosząc "f" do innego elementu div lub pomijając go, możemy poruszać się po lub wyłączać pasek wyszukiwania. Rozwiązaniem problemu może wyglądać następująco:

datatable(iris, filter="top", selection="multiple", escape=FALSE, 
     options = list(sDom = '<"top">lrt<"bottom">ip')) 
+0

Tak, próbowałem go. "Wyszukiwanie globalne" znika, ale "wyszukiwanie kolumny" również nie działa ... – Marta

+0

Dziwne! Powyższe działa zgodnie z oczekiwaniami. Jakie wersje R, shiny i DT są uruchomione? Może wersja dev działa lepiej: devtools :: install_github ('rstudio/DT') – Pewi

+0

Istnieją pola filtrujące dla kolumn, ale one nie działają (spróbuj, jeśli jest taka sama w twojej wersji). Mój DT jest całkiem nowy, jak sądzę. – Marta

8

Nieco prostsza składnię, dla nikogo innego nadal poszukuje:

datatable(head(iris), options = list(dom = 't'), filter = list(position = "top")) 

Inne opcje. Aby wyświetlić tabelę, używanie DOM = 't':

datatable(head(iris), options = list(dom = 't')) 

do wyświetlenia tabeli i filtra (pole wyszukiwania), ustawienie domyślne:

datatable(head(iris), options = list(dom = 'ft')) 

Źródło:

https://rstudio.github.io/DT/options.html

+5

Może to spowodować wyłączenie większej liczby funkcji, niż pożądane, takich jak przyciski strony. – wibeasley

0
datatable(iris, filter="top", selection="multiple", escape=FALSE, 
options = list(searching = FALSE)) 
+1

Dziękujemy za ten fragment kodu, który może zapewnić ograniczoną, natychmiastową pomoc. A [odpowiednie wyjaśnienie] (https://meta.stackexchange.com/q/114762) znacznie poprawiłoby jego długoterminową wartość, pokazując, dlaczego jest to dobre rozwiązanie problemu i czyniłoby go bardziej przydatnym dla przyszłych czytelników z innymi podobne pytania. Proszę [edytuj] (https://meta.stackoverflow.com/posts/360251/edit) swoją odpowiedź, aby dodać wyjaśnienia, w tym założenia, które podjąłeś. [ref] (https://meta.stackoverflow.com/a/360251/8371915) – user8371915