2016-03-22 4 views
5

Я строю ручную панель управления R, и когда я помещаю свои данные в таблицу, используя пакет DT и renderdatatable(). В верхней части каждого столбца у меня есть фильтры, окно поиска слишком узкое, чтобы увидеть текст и выбрать параметр. Вот изображение:R блестящий размер фильтра фильтра размер, чтобы сузить, чтобы увидеть текст

enter image description here

Кто-нибудь знает способ увеличить ширину?

Вот мой код для DataTable кода в server.r:

output$table <- DT::renderDataTable(DT::datatable({  
    data <- rv$data 
    if (input$sour != "All") { 
     data <- data[data[,1] == input$sour,] 
    }else{data} 
    if (input$sour1 != "All") { 
     data <-data[data[,2] == input$sour1,] 
    }else{data} 
    if (input$tran != "All") { 
     data <-data[data[,3] == input$tran,] 
    }else{data} 
    },filter='top')) 

вот код в ui.r:

tabItem(tabName = "ResultsTable", 
       fluidPage( 
       headerPanel(
        h1("List", align="center", style = "font-family: 'Verdana';font-weight: 800; line-height: 1.1; color: #151515;")), 
       # fluidRow(
       #  column(8, DT::dataTableOutput("table",width = "100%"),offset = 2)))), 
       #     # Create a new Row in the UI for selectInputs 
       fluidRow(

        column(4, 
         selectInput("sour", 
            "Name:", 
            c("All", 
             unique(as.character(df[,1])))) 
       ), 
        column(4, 
         selectInput("sour1", 
            "Number:", 
            c("All", 
             unique(as.character(df[,2])))) 
       ), 
        column(4, 
         selectInput("tran", 
            "Code:", 
            c("All", 
             unique(as.character(df[,3])))))), 
       # Create a new row for the table. 
       fluidRow(column(11, DT::dataTableOutput("table",width = "95%"))))) 

Я попытался это, но он не работает:

output$table <- DT::renderDataTable(DT::datatable({  
    data <- rv$data 
    if (input$sour != "All") { 
     data <- data[data[,1] == input$sour,] 
    }else{data} 
    if (input$sour1 != "All") { 
     data <-data[data[,2] == input$sour1,] 
    }else{data} 
    if (input$tran != "All") { 
     data <-data[data[,3] == input$tran,] 
    }else{data} 
    },filter='top',options = list(
    autoWidth = TRUE, 
    columnDefs = list(list(width = '200px', targets = "_all")) 
))) 

ответ

1

A similar question was answered here.

Кроме того, в порядке to use range sliders to filter rows within ranges рассмотрите преобразование столбца «Список даты» в формат даты с использованием as.Date().

+0

К сожалению, я попробовал это, но это не повлияло. Это не обязательно ширина столбца, которую я пытаюсь расширить, но ширину поля фильтра вниз. – Tracy

1

Я решил эту проблему с помощью CSS:

input { 
    width: 100px !important; 
} 

Вы также можете применить этот стиль к factor фильтров только:

td[data-type="factor"] input { 
    width: 100px !important; 
} 

Поместите my.css файл в www подкаталоге, и ссылку на него:

shinyApp(
    ui = fluidPage(
     tags$head(
      tags$link(
       rel = "stylesheet", 
       type = "text/css", 
       href = "my.css") 
     ), 

     DT::dataTableOutput(...) 
    ) 
+0

Это делает так, чтобы поля выбора были достаточно большими, но, похоже, это может привести к проблемам с фильтрацией, совпадающей с именами столбцов. –

 Смежные вопросы

  • Нет связанных вопросов^_^