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

如何在react-bootstrap-table2中基于行数据动态禁用行选择checkbox

问题描述

效果示意图
目前我通过硬编码nonSelectable: [1, 2]实现了第1、2行不可选择的效果。现在我需要根据文件的createdByID字段判断行是否可选:如果文件的createdByID与当前登录用户ID一致则行可选,否则不可选。
我现在遇到的问题是:如何获取每一行的行数据,将其createdByID与用户ID比对后,把需要禁用checkbox的行索引整理为数组,传给nonSelectable属性?我找到了相关的问题讨论,但不确定如何实现,因为我不清楚要从哪里获取对应的key值。

解决方案

你可以直接遍历表格的原始数据源,按需筛选出不可选的行key集合,具体步骤如下:

  • 先确认你给<BootstrapTable>组件配置的keyField属性值,这个字段是你每行数据的唯一标识,后续收集的不可选行key就取这个字段的值
  • 遍历你的表格数据源,把createdByID不等于当前登录用户ID的条目,对应keyField字段的值收集为数组,直接传给selectRow配置的nonSelectable属性即可

代码示例

基于行唯一标识配置

// 当前登录用户ID
const currentUserId = '你当前登录用户的ID'
// 表格数据源
const tableData = [/* 你的原始表格数据 */]
// 表格列配置
const columns = [/* 你的列配置 */]

// 筛选不可选行的key集合(假设keyField配置为'id')
const nonSelectableRows = tableData
  .filter(item => item.createdByID !== currentUserId)
  .map(item => item.id)

// 行选择配置
const selectRow = {
  mode: 'checkbox',
  nonSelectable: nonSelectableRows,
  // 其余原有配置保持不变
}

// 表格组件渲染
<BootstrapTable
  keyField='id'
  data={tableData}
  columns={columns}
  selectRow={selectRow}
/>

基于行索引配置

如果你需要沿用之前用行索引作为不可选标识的逻辑,改用如下方式生成数组即可:

const nonSelectableRows = tableData
  .map((item, index) => item.createdByID !== currentUserId ? index : null)
  .filter(val => val !== null)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:36:04