2016-02-25 29 views
9

Vorrei rimuovere l'opzione 'ricerca globale' dalla mia applicazione, ma lasciare l'opzione 'cerca colonna'. Qualche idea? Ho provato diversi parametri come searching=FALSE, filtering='none' ... Nessuno di questi funziona correttamente.Rimuovi l'opzione 'cerca' ma lascia l'opzione 'cerca colonne'

Il mio codice:

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") 

)) 

E l'immagine che aiuta a capire il mio problema:

enter image description here

+0

Date un'occhiata [qui] (http://rstudio.github.io/DT/), sezione 2.5. –

+0

@ danas.zuokas, ho letto questo manuale, ma non mi ha aiutato. Potresti darmi un indizio più specioso? – Marta

+0

Beh, non ho la risposta da solo, ho pensato che ti avrebbe portato nella giusta direzione. Quello che capisco è che puoi costruire un tavolo come preferisci usando un contenitore personalizzato. Suggerisco di riprodurre l'esempio e adattarlo alle tue esigenze. –

risposta

16

Le opzioni DT devono essere passate come elenco. Inoltre, utilizzando la variabile di inizializzazione sDom è possibile specificare la posizione dei controlli DOM. La configurazione standard è simile al seguente:

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

La sintassi è un po 'eccentrico, ma in fondo quanto sopra dice che F, L, R e t opzioni sono da collocare nel div superiore con le opzioni di I e P il div inferiore Si prega di fare riferimento ai documenti a http://legacy.datatables.net/usage/options per una spiegazione più approfondita.

In ogni caso, "f" è l'opzione "Filtro input" (cioè l'opzione di ricerca) e spostando "f" su un altro div o omettendolo possiamo spostarci o disabilitare la barra di ricerca. Una soluzione al problema potrebbe essere simile a questo:

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

Sì, l'ho provato. "Ricerca globale" scompare, ma "ricerca colonna" non funziona ... – Marta

+0

Strano! Quanto sopra funziona come previsto per me. Quali versioni di R, lucido e DT stai utilizzando? Forse la versione dev funziona meglio: devtools :: install_github ('rstudio/DT') – Pewi

+0

Ci sono filtri per le colonne, ma non funzionano (prova, se è lo stesso nella tua versione). Il mio DT è abbastanza nuovo, penso. – Marta

8

leggermente più semplice sintassi, per chiunque altro ancora alla ricerca:

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

Altre opzioni. Per visualizzare tavolo solo, l'uso dom = 't':

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

Per visualizzare tavolo e filtro (casella di ricerca), l'impostazione predefinita:

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

Fonte:

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

+5

Questo potrebbe disattivare più funzioni di quelle desiderate, come i pulsanti della pagina. – wibeasley

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

Grazie per questo snippet di codice, che potrebbe fornire un aiuto limitato e immediato. Una [spiegazione corretta] (https://meta.stackexchange.com/q/114762) migliorerebbe notevolmente il suo valore a lungo termine, mostrando perché questa è una buona soluzione al problema e renderebbe più utile ai futuri lettori con altri , domande simili. Per favore [modifica] (https://meta.stackoverflow.com/posts/360251/edit) la tua risposta per aggiungere qualche spiegazione, incluse le ipotesi che hai fatto. [Ref] (https://meta.stackoverflow.com/a/360251/8371915) – user8371915