制表符列可见,使用函数决定列可见性

Ali*_*Ali 2 javascript jquery tabulator

我试图通过函数设置列可见性,以检查单元格中的值是否为真,然后该列可见,否则隐藏,

我使用 tabulator JS 这部分基于 rows 中的列值,如下我的计划是,如果ageRange > 25,则该列可见,但没有成功,我尝试了以下代码:

   



    const table = new Tabulator("#example-table", {
      data: tabledata,
      columns: [{
          title: "Name",
          field: "name",
          width: 200
        },
        {
          title: "Gender",
          field: "gender",
          visible: false
        },
     {
          title: "Age",
          formatter: AgeIcon,
          width: 40,
          headerSort: false,
          visible: function (e, cell) {
            return cell.getRow().getData().ageRange > 25;
          }
        },
    ```
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <link href="https://unpkg.com/tabulator-tables@4.4.1/dist/css/tabulator.min.css" rel="stylesheet">
    <script type="text/javascript" src="https://unpkg.com/tabulator-tables@4.4.1/dist/js/tabulator.min.js"></script>
    <div id="example-table"></div>
Run Code Online (Sandbox Code Playgroud)

Chr*_*eck 6

通过函数设置列可见性

根据Tabulator 文档visible列定义上的属性不采用函数,仅采用布尔值。

使用该hideColumn函数根据数据隐藏列。

请参阅此代码片段作为示例。

//define data
const tabledata = [{
    id: 1,
    name: "Oli Bob",
    location: "United Kingdom",
    gender: "male",
    rating: 1,
    col: "red",
    dob: "14/04/1984"
  },
  {
    id: 2,
    name: "Mary May",
    location: "Germany",
    gender: "female",
    rating: 2,
    col: "blue",
    dob: "14/05/1982"
  },
  {
    id: 3,
    name: "Christine Lobowski",
    location: "France",
    gender: "female",
    rating: 0,
    col: "green",
    dob: "22/05/1982"
  },
  {
    id: 4,
    name: "Brendon Philips",
    location: "USA",
    gender: "male",
    rating: 1,
    col: "orange",
    dob: "01/08/1980"
  },
  {
    id: 5,
    name: "Margret Marmajuke",
    location: "Canada",
    gender: "female",
    rating: 5,
    col: "yellow",
    dob: "31/01/1999"
  },
  {
    id: 6,
    name: "Frank Harbours",
    location: "Russia",
    gender: "male",
    rating: 4,
    col: "red",
    dob: "12/05/1966"
  },
  {
    id: 7,
    name: "Jamie Newhart",
    location: "India",
    gender: "male",
    rating: 3,
    col: "green",
    dob: "14/05/1985"
  },
  {
    id: 8,
    name: "Gemma Jane",
    location: "China",
    gender: "female",
    rating: 0,
    col: "red",
    dob: "22/05/1982"
  },
  {
    id: 9,
    name: "Emily Sykes",
    location: "South Korea",
    gender: "female",
    rating: 1,
    col: "maroon",
    dob: "11/11/1970"
  },
  {
    id: 10,
    name: "James Newman",
    location: "Japan",
    gender: "male",
    rating: 5,
    col: "red",
    dob: "22/03/1998"
  },
];

//define table
const table = new Tabulator("#example-table", {
  data: tabledata,
  columns: [{
      title: "Name",
      field: "name",
      width: 200
    },
    {
      title: "Gender",
      field: "gender",
      visible: false
    },
    {
      title: "Rating",
      field: "rating",
      width: 80,
      bottomCalc: "avg",
      visible: true
    },
    {
      title: "Favourite Color",
      field: "col"
    },
    {
      title: "Date Of Birth",
      field: "dob",
      align: "center",
      sorter: "date"
    }
  ],
});
const ratings = tabledata.map(d => d.rating);
const averaveRating = ratings.reduce((p, c) => p + c) / ratings.length;

//hide the "rating" column if low average rating
if (averaveRating < 2.5) {
  table.hideColumn("rating");
  console.log(`Average rating is ${averaveRating}, column hidden`);
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://unpkg.com/tabulator-tables@4.4.1/dist/css/tabulator.min.css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/tabulator-tables@4.4.1/dist/js/tabulator.min.js"></script>
<div id="example-table"></div>
Run Code Online (Sandbox Code Playgroud)