我实现了以下闪亮的表格,用户可以在其中过滤整个表格或特定列。但是,虽然智能搜索适用于整个表的搜索,但我无法启用对列的智能搜索。有人可以给我一个提示,我可以做什么来为列启用智能搜索吗?先感谢您。
output$shiny_table =
DT::renderDT({
# Show the filtered data table
DT::datatable(
# Call the filtered table as function
data = table_filtered(),
# Load and include extension modules
extensions = c("FixedHeader"),
# Each column has its own search box
filter = list(position = "top",
clear = TRUE,
plain = TRUE),
# Further options
options = list(
# Mark found search terms
searchHighlight = TRUE,
search = list(smart = TRUE, regex = TRUE, caseInsensitive = TRUE),
# Special column properties
columnDefs = list(
# For specific columns: enable smart search
list(targets = c("Title", "Authors", "Journal"),
search = list(smart = TRUE, regex = TRUE, caseInsensitive = TRUE)),
# For specific columns: hide the search fields
list(targets = c(" ", "Year", "Type", "Citations", "DOI"),
searchable = FALSE)
)
)
)
}, server = TRUE)
search
中没有 columnDefs
选项。你可以试试这个:
library(DT)
js <- c(
"function(settings) {",
" var instance = settings.oInstance;",
" var table = instance.api();",
" var $inputs = instance.parent().find('.form-group input');",
" $inputs.off('keyup search input').on('keyup', function() {",
" var value = $(this).val();",
" if(value !== '') {",
" var index = 1 + $inputs.index(this);", # add one if row names
" var column = table.column(index);",
" column.search(value, false, true, true).draw();", # options: regex, smart, case insensitive
" }",
" });",
"}"
)
dat <- data.frame(
car = c("Mazda", "Mazda RX4", "Mazda RX4 Wag", "Ford", "Mercedes"),
pet = c("dog", "dog", "cat", "cat", "cat"),
day = Sys.Date() + 0:4
)
datatable(
dat, filter = "top",
options = list(
initComplete = JS(js),
columnDefs = list(
list(targets = 1, searchable = FALSE)
)
)
)