You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于数组值初始化MUI DataGrid的复选框选中状态

解决MUI DataGrid初始选中指定行的问题

你的问题出在selectionModel的初始化逻辑上,错误地将所有行ID加入了选中集合,导致全选。只需按以下方式修正:

核心修正逻辑

从城市数据源中筛选出ID存在于userMockup.cities数组中的项,提取它们的ID作为初始选中值。

代码示例

假设你的城市数据数组为cityData,修改selectionModel的初始化代码:

import { useState } from 'react';
import { DataGrid } from '@mui/x-data-grid';

const userMockup = {
  id: 1,
  name: "Citizen 1",
  cities: [1, 2],
  isAlive: true
};

// 示例城市数据
const cityData = [
  { id: 1, name: "城市A" },
  { id: 2, name: "城市B" },
  { id: 3, name: "城市C" }
];

export default function CityGrid() {
  // 正确初始化选中模型:仅选中userMockup.cities中的ID对应的行
  const [selectionModel, setSelectionModel] = useState(
    cityData.filter(city => userMockup.cities.includes(city.id)).map(city => city.id)
  );

  return (
    <div style={{ height: 400, width: '100%' }}>
      <DataGrid
        rows={cityData}
        columns={[
          { field: 'id', headerName: 'ID', width: 70 },
          { field: 'name', headerName: '城市名称', width: 150 }
        ]}
        checkboxSelection
        selectionModel={selectionModel}
        onSelectionModelChange={(newModel) => setSelectionModel(newModel)}
      />
    </div>
  );
}

关键说明

  • 用filter方法筛选出与userMockup.cities匹配的城市项,再用map提取ID,得到正确的初始选中集合。
  • 确保checkboxSelection属性已开启,这是行多选的前提。

内容的提问来源于stack exchange,提问作者Lucas Fernandez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 14:35:22