【问题标题】:How to put event for column using react-bootstrap-table如何使用 react-bootstrap-table 为列添加事件
【发布时间】:2020-11-17 03:32:36
【问题描述】:

我正在我的 react 应用程序中使用表格,为此我正在使用 React bootstrap table2,我正在成功渲染表格。

请检查编辑部分

  • 我在有条件地呈现表格数据时遇到问题
  • 我有一列名为Availability,所以它是真假,我想做的是当它是真的时显示刻度线(右)如果假显示交叉一个,我可以插入新列但是我无法更新现有的。

我在做什么来插入新列

let c = {
  dataField: "Class",
  text: "Class",
  editable: false,
  formatter: () => {
    return 12;
  },
};
d.push(c);
setColumnData(d);

d 上方是 columnData

但我被困在这里更新现有的

我的数据

{
  column_data: [
    {
      dataField: "first_name",
      text: "Name",
      sort: true,
    },
    {
      dataField: "last_name",
      text: "Last Name",
      sort: false,
    },
    {
      dataField: "availability",
      text: "Available",
      sort: true,
    },
  ],
  tableData: [
    {
      first_name: "simon",
      last_name: "chaz",
      availability: true,
    },
    {
      first_name: "steve",
      last_name: "smith",
      availability: false,
    },
    {
      first_name: "michel",
      last_name: "gread",
      availability: true,
    },
    {
      first_name: "rimon",
      last_name: "class",
      availability: false,
    },
  ],
}

这就是我渲染表格的方式:

<BootstrapTable
  bootstrap4
  keyField="certificate_Name"
  data={data.tableData}
  columns={data.column_data}
  wrapperClasses="table-responsive"
  classes="table-hover table-bordered"
  headerClasses="header-class"
/>;
  • 如果Availability 为真,那么我想显示&lt;i className="ri-checkbox-circle-line"&gt;&lt;/i&gt;
  • 如果Availability 为假,那么&lt;i class="ri-close-line"&gt;&lt;/i&gt;

我正在尝试在特定条件下显示我的单元格数据

Here is my code sandbox

编辑

我已使用上述解决方案更新了我的代码沙箱,

如果是真的,我正在展示我想要的任何东西,否则我还想要什么。

{
    dataField: "available",
    text: "Available",
    sort: true,
    formatter: columnFormatter  // this I am putting 
  }

这是我的功能

 const columnFormatter = (cell, row, rowIndex, formatExtraData) => {
  if (row && row.availability) {
    return <a href="#">check this out</a>;
  } else {
    return row.availability;
  }
};

现在在 if 条件下,我尝试输入 event onClick 但我无法实现。

I was going through this link 但这是针对每一行点击,我想点击特定列到特定单元格。

updated code sandbox

【问题讨论】:

  • 你想达到什么目的?将onClick 处理程序添加到您的&lt;a&gt; 元素就可以了
  • 我试过了,但它不工作,你能显示 mw 一个工作代码

标签: javascript reactjs react-hooks react-bootstrap-table


【解决方案1】:

添加onClick 处理程序非常简单:

<a
    href="#"
    onClick={() => {
      console.log("clicked row", rowIndex);
    }}>
    check this out
</a>

【讨论】:

    【解决方案2】:

    我想您想根据可用性有条件地呈现图标 基于此

    • 如果可用性为真,那么我想显示&lt;i className="ri-checkbox-circle-line"&gt;&lt;/i&gt;
    • 如果可用性为假则&lt;i class="ri-close-line"&gt;&lt;/i&gt;

    所以尝试这样做

    const columnFormatter = (cell, row, rowIndex, formatExtraData) => {
      if (row && row.availability) {
        return <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-check-circle-fill" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path fill-rule="evenodd" d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"/>
    </svg>
      } else {
        return <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-x-circle-fill" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path fill-rule="evenodd" d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293 5.354 4.646z"/>
    </svg>
      }
    };
    

    https://codesandbox.io/s/charming-bird-e389g?file=/src/App.js:228-1118

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-06
      • 2019-07-13
      • 2021-08-30
      • 2017-02-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多