我还是个新手React,MUI所以请饶我一命。我正在学习使用复选框构建多个选择选项,并且我已经从数组中填充了下拉选项。
我还设置了初始/默认状态选项。初始/默认状态选项(Nintendo 和 XBoX)显示在主输入选择字段中,但不幸的是没有在下拉复选框中选中标记,如下面的屏幕截图所示。
我想要实现的是这样的(默认状态下所有选定的选项(Nintendo 和 XBoX)都显示在初始页面加载时的复选框上):
这是我在https://stackblitz.com/edit/react-rahqrq?file=demo.js中的实时演示编码
我很困惑,除了来自州的默认初始选项外,我可以勾选下拉列表中的所有其他选项复选框。它无法点击且无法更改,我不知道为什么。非常感谢任何提示和线索,提前致谢,请原谅我糟糕的语法和最诚挚的问候。
import * as React from 'react';
import OutlinedInput from '@mui/material/OutlinedInput';
import InputLabel from '@mui/material/InputLabel';
import MenuItem from '@mui/material/MenuItem';
import FormControl from '@mui/material/FormControl';
import ListItemText from '@mui/material/ListItemText';
import Select from '@mui/material/Select';
import Checkbox from '@mui/material/Checkbox';
const ITEM_HEIGHT = 48;
const ITEM_PADDING_TOP = 8;
const MenuProps = {
PaperProps: {
style: {
maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,
width: 250,
},
},
};
const variants = …Run Code Online (Sandbox Code Playgroud) 在我正在创建的闪亮应用程序中,我有一组彼此互连的下拉列表框。即一个下拉框的输入决定了其他下拉框的一组输入。
对于下拉框,我使用 selectInput() 函数来执行此操作,并且还有一些下拉框,我需要从中选择多个选项。
但当选项数量较多时,用户需要单独选择每个选项。有什么办法可以一次选择所有选项。
这有点像“全部”选项。它选择一切。
我不想使用"pickerInput"函数。
由于下拉列表中的选项取决于之前的下拉输入,因此我无法创建静态选择列表。
作为解决方法,我使用复选框输入来选择下拉列表中的所有值,但不幸的是它不起作用。
请在下面找到 UI 和服务器代码。
Source_Data <-
data.frame(
key = c(1, 1, 1, 2, 2, 2, 3, 3, 3),
Product_Name = c(
"Table",
"Table",
"Chair",
"Table",
"Bed",
"Bed",
"Sofa",
"Chair",
"Sofa"
),
Product_desc = c("XX", "XX", "YY", "XX", "Z", "ZZZ", "A", "Y", "AA"),
Cost = c(1, 2, 3, 4, 2, 3, 4, 5, 6)
)
Run Code Online (Sandbox Code Playgroud)
UI 和服务器代码
ui <- fluidPage(titlePanel("Demo"),
sidebarLayout(
sidebarPanel(
sliderInput(
"key",
"keys",
min = 1,
max = 3, …Run Code Online (Sandbox Code Playgroud) 问题:每当用户位于数据表的不同页面并更新某个列值(通过 selectInput)时,R Shiny 数据表就会重新加载到第一页。
嗨堆栈用户,
在 R Shiny 中,我创建了一个包含数据表 (renderDataTable) 的 Shiny 应用程序,其中“状态”列的单元格值可以由其预期用户更新(通过 selectInput)。
我准备了以下代码的简化示例。
用户界面
require(shiny)
require(shinyjs)
require(data.table)
require(dplyr)
require(DT)
shinyUI(fluidPage(
useShinyjs(),
mainPanel("",
fluidRow(
splitLayout(div(DT::dataTableOutput('my_table')),
div(
shinyjs::hidden(
wellPanel(id="my_panel",
h3("Update Status",align="center"),
htmlOutput("my_status")
)
)
)
)
)
)
))
Run Code Online (Sandbox Code Playgroud)
服务器
#### DATA PREP AND FUNCTIONS ######################
id <- c('10001','10002','10003','10004','10005',
'10006','10007','10008','10009','10010',
'10011','10012','10013','10014','10015')
status <- c('OPEN','OPEN','CLOSED','CLOSED','OPEN',
'OPEN','CLOSED','CLOSED','OPEN','CLOSED',
'CLOSED','OPEN','OPEN','OPEN','CLOSED')
dt <- data.table(id=id,status=status)
render_my_table <- function(dt, sel) {
if(missing(sel)) {
sel = list(mode='single')
} else {
sel = list(mode='single', selected = …Run Code Online (Sandbox Code Playgroud) 如何从带有selectInput分组选项的下拉框中选定的输入中获取组名称?Building例如,在选择Bankwithin之后Building和Nature在选择Bankwithin之后如何获取Nature?
更新的示例:
# demoing optgroup support in the `choices` arg
shinyApp(
ui = fluidPage(
selectInput("state", "Choose a word:",
list(`Building` = list("Apartment", "Bank", "Hospital"),
`Nature` = list("Bank", "River", "Orange"),
`Color` = list("Blue", "Orange", "Red"))
),
textOutput("result")
),
server = function(input, output) {
output$result <- renderText({
paste("You chose", input$state)
})
}
)
Run Code Online (Sandbox Code Playgroud)
一种方法是存储所有选项及其分组标签的变量,并搜索该选项来自哪个组。但当群体之间存在重叠选择时,这就不起作用了。
我想删除/减少闪亮中选择输入的标签和选择选项之间的空间。我还想减少两个不同选择输入之间的空间。
我尝试将 selectinputs 包装为 div 样式,并将边距和填充设置为 0。这没有效果,但我可能做错了。请参阅下面的代码。
ui <- fluidPage(
theme = shinytheme("sandstone"),
sidebarLayout(
sidebarPanel(
div(style = "font-size:12px; margin: 0px; padding: 0px",
selectInput(
"select1",
label = h5("Selection 1"),
choices = c("a", "b", "c"),
selectize = TRUE
),
selectInput(
"select2",
label = h5("Selection 2"),
choices = c("a", "b", "c"),
selectize = TRUE
)
)
),
mainPanel(
)
)
)
server <- function(input, output, session) {}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud) 我想找到一个资源,允许我的 Shiny selectInput 函数根据我创建的类别标题展开/折叠。我已经搜索了一些引导程序资源,但还没有成功。请原谅我的最小工作示例,我承认可能有更有效的方法来提供 MWE。感谢您提供的任何建议。
library(shiny)
library(tidyverse)
#create a quick dataset to plot
schools <- as.data.frame(table(
c('Adams', 'Van Buren', 'Clinton', 'Douglas', 'Edwards',
'Franklin', 'Grant', 'Harrison', 'Ignatius', 'Justice',
'Kellogg', 'Lincoln'),
dnn = list("school")))
enrollment <- as.data.frame(table(
c(300, 305, 265, 400, 500, 450, 475, 900, 800, 850, 1200, 1500),
dnn = list("enrollment")))
schoolsDataframe <- schools %>%
bind_cols(enrollment) %>%
select(school, enrollment)
#define data elements for selectInput choices argument
elem <- c('Adams', 'Van Buren', 'Clinton', 'Douglas')
mid <- c('Edwards', 'Franklin', 'Grant')
high <- c('Harrison', …Run Code Online (Sandbox Code Playgroud) 我正在开发一个闪亮的应用程序,并且有两个 selectInput 框。他们都采用相同的输入,我想根据对方的选择更新输入框。
基本上我想删除一个输入框中选定的变量,而在另一个输入框中的下拉列表中不可用。
vars <- c("A", "B", "C", "D", "E", "F", "G", "H")
selectInput("v1", label = "Select Variable 1", choices = vars),
selectInput("v2", label = "Select Variable 2", choices = vars)
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,如果用户选择选项 A 作为“V1”,我想从 v2 可用的选项中删除 A,反之亦然。我尝试执行以下操作但没有成功
observe({
updateSelectInput(session, "v1", choices = vars)
})
observe({
updateSelectInput(session, "v2", choices = vars)
})
Run Code Online (Sandbox Code Playgroud) 我有一个 Shiny 应用程序,我希望用户能够选择多个选项,但仅限于一定的限制。我找不到限制数量的方法。
下面是一个简单的、可重现的示例。在其中,我的用户只能为第一个问题选择最多 2/4 个选项,为第二个问题选择最多 3/4 个选项,为第三个问题选择任意数量的选项(问题无需编辑) 3)。
library(shiny)
ui <- fluidPage(
sidebarLayout(
sidebarPanel( selectInput("q1", label = "Choose up to 2.", choices = c(" ", "option 1", "option 2", "option 3", "option 4"), multiple = TRUE),
selectInput("q2", label = "Choose up to 3.", choices = c(" ", "option 1", "option 2", "option 3", "option 4"), multiple = TRUE),
selectInput("q3", label = "Choose as many as you want.", choices = c(" ", "option 1", "option 2", "option 3", "option 4"), …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 R Shiny 构建一个页面,其中包含:
用于上传 CSV 文件的文件小部件
选择输入组件
我想按如下方式使用它们:
到目前为止,我已经尝试过各种形式的observe()和observeEvent(),但没有成功地实现这一目标。您的任何建议都会很棒。
selectinput ×9
r ×8
shiny ×8
javascript ×2
data.table ×1
dt ×1
material-ui ×1
reactjs ×1
shinybs ×1