簡體   English   中英

React 阻止 MUI Select 在 MUI Grid 中改變寬度

[英]React prevent MUI Select from changing width in MUI Grid

我有一個列數可變的 MUI 網格設置。 目前,如果用戶為 Select 框選擇一個長字符串,則 Select 會增長,從而增加整個列的大小。 但是,我希望每一列都保持相同的大小,無論選擇什么(並截斷 Select 框中的內容)。

請查看下面的圖片以便更好地理解。 在這些示例中,有 8 列:

未填充:空字段

Filled:字段填充,清楚select框中的長文本resized the whole column

代碼:

{this.state.sampleData.map((obj, idx) => {
                  return (
                    <Grid item xs={true}> //Ensures the columns are the correct size (more columns = smaller widths).
                      <Grid container spacing={1}>
                        <Grid item xs={12}>
                          <Typography>#{obj["#"]}</Typography>
                        </Grid>


                        <Grid item xs={12}>
                          <TextField
                            className={classes.smallTextField}
                            inputProps={{
                            ...
                            }}
                            variant="outlined"
                            label="Name"
                            name="name"
                            value={
                              this.state.sampleData[idx].name || ""
                            }
                            onChange={(event) => {
                              this.handleChange(
                                event.target.value,
                                idx,
                                "name"
                              );
                            }}
                          />
                        </Grid>

                        <Grid item xs={12}>
                          <FormControl
                            variant="filled"
                            fullwidth
                            size="small"
                            className={classes.selectFieldFormControl}
                          >
                            <InputLabel
                              sx={{ ... }}
                            >
                              Position
                            </InputLabel>
                            <Select
                              sx={...}
                              name="position"
                              value={
                                this.state.sampleData[idx].position || ""
                              }
                              onChange={(event) => {
                                this.handleChange(
                                  event.target.value,
                                  idx,
                                  "position"
                                );
                              }}
                            >
                              <MenuItem value="">
                                <em>None</em>
                              </MenuItem>
                              <MenuItem value={"manager"}>
                                manager
                              </MenuItem>
                              <MenuItem value={"factory"}>
                                factory
                              </MenuItem>
                              <MenuItem value={"assistant to the regional manager"}>
                                assistant to the regional manager
                              </MenuItem>
                            </Select>
                          </FormControl>
                        </Grid>
                        </Grid>
                        );})}

如何讓方框截斷其中的文本,以便不調整列的大小? 我認為我需要在 Select 框本身或父網格項中添加一些樣式。

謝謝!

我有同樣的問題,將 100% 的最大寬度添加到包含 select 的網格項,並使 select 的寬度為 100% 為我解決了這個問題:

<Grid item xs={12} lg={4} sx={{ maxWidth: "100% !important" }}>
      <h3 id="select-theme-label">Themes</h3>
      <Select
        id="select-theme"
        sx={{ width: "100%" }}
      ></Select>
</Grid>

或者可能更現實一點,響應式地添加正確的 maxWidth:

sx={{ maxWidth: { xs: "100% !important", md: "28% !important" } }}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM