【问题标题】:Get row item on checkbox Selection in React MUI DataGrid在 React MUI DataGrid 中的复选框选择上获取行项目
【发布时间】:2021-05-31 03:10:43
【问题描述】:

我从 API 获取数据并使用 React MUI DataGrid 显示它。 我已启用复选框选择,我想获取所选行的特定单元格项并将它们保存在列表中。

例如,在下图中,如果我点击第一行的复选框,我想在列表中添加“当前位置”,然后如果我点击第二行,我想添加第二行的当前位置在现有列表中。

下面是我当前的代码

<DataGrid
   rows={rows}
   columns={columns}
   checkboxSelection     
   onSelectionModelChange={itm => console.log(itm)}
/>

但是我得到这样的输出

我对 React 很陌生,我不确定如何获取所选行的当前位置值并将其添加到列表中。

【问题讨论】:

    标签: reactjs datagrid material-ui react-tsx


    【解决方案1】:

    您只能访问 onSelectionModelChange 回调中的行 ID。如果要获取整行对象,请使用原始的rows 数据并根据所选的 id 过滤其他对象。

    注意:DataGrid 在内部将每个行 ID 存储在字符串中,因此如果原始行数据中的 ID 是数字,您可能需要在比较之前将其转换为 toString()

    rows={rows}
    onSelectionModelChange={(ids) => {
      const selectedIDs = new Set(ids);
      const selectedRowData = rows.filter((row) =>
        selectedIDs.has(row.id.toString());
      );
      console.log(selectedRowData);
    }}
    

    现场演示

    【讨论】:

    • 以及如何在列表中添加选中的行项数据?
    • @Maryam 你的意思是在开始时以编程方式添加选定的行数据?
    • 基本上,在网格中显示数据后,我必须在单击按钮时调用 API(发布请求),并且必须在该 API 调用的正文中传递选定的行数据列表的形式。例如,如果我选择 5 行,我希望将这 5 行的“当前位置”添加到列表中,以便我可以在我的 API 调用中传递它们。
    • @Maryam 我为您更新了具体问题的答案和演示。
    • 这 100% 有效!
    猜你喜欢
    • 2021-12-16
    • 2021-01-15
    • 1970-01-01
    • 2021-06-23
    • 2017-08-27
    • 2012-06-27
    • 1970-01-01
    • 2011-11-21
    • 2011-07-02
    相关资源
    最近更新 更多