el-table 根据筛选条件时间范围动态展示列

问题背景:

根据时间筛选,时间范围内的每一天都为一列,表格动态展示数据。

返回前端的数据格式:

return了一个DTO;

DTO中有两个属性,一个为LinkedHashMap<String.String>的header,其储存el-table的第一行列名。另一个为List<LinkedHashMap<String, Object>>的dataTable,其储存每一行的数据。

public class ArrayTableNewDTO extends MonitorBaseDTO implements Serializable {
    /**
     * 表格的头,也就是header
     */
    private LinkedHashMap<String, String> header;

    /**
     * 表格的数据
     */
    private List<LinkedHashMap<String, Object>> dataTable;

}
header: 
data1: "2022-11-06"
data2: "2022-11-07"
data3: "2022-11-08"
data4: "2022-11-09"
data5: "2022-11-10"
data6: "2022-11-11"
data7: "2022-11-12"
data8: "2022-11-13"
projectName: "项目名"


dataTable: Array(42)
0: 
data1: 4
data2: 0
data3: 4
data4: 4
data5: 4
data6: 0
data7: 4
data8: 0
projectName: "BPM"

 解决方案:

el-table 绑定数据 tableData ; el-table-column 循环 tableHeader中的;

      <el-table :data="tableData" style="width: 100%">
          <el-table-column 
          :prop="index" 
          :label="item"  
          show-overflow-tooltip 
          v-for="(item, index) in tableHeader"
          :key="index"
          sortable>
          </el-table-column>
        </el-table>

如若数据需要排序、过滤、加链接:

        index里的数据为每一个列名

       <template slot-scope="scope" >
              <div v-if="index == 'projectName'">
                <el-link
                type="primary"
                @click="getDeepData(scope.row.projectName)" >
                {{scope.row[index]}}
              </el-link>
              </div>
              <div v-else>
                {{scope.row[index]}}
              </div>
        </template>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
`el-table` 筛选通常是指在使用Element UI组件库构建的应用中对表格数据进行过滤操作的功能。Element UI是一个基于Vue.js的UI框架,它提供了一系常用的前端UI元素及功能,包括表单、表、按钮等。 在 `el-table` 组件中,通过筛选功能可以帮助用户快速找到他们感兴趣的数据行。这种筛选可以基于特定的值进行,例如姓名、年龄、性别等等。 ### 实现筛选功能的基本步骤: #### 1. 添加筛选功能到`el-table` 默认情况下,`el-table` 可能不会直接显示筛选选项。为了添加这个功能,你需要配置一些额外属性来启用筛选并设置其行为。以下是基本的配置示例: ```html <template> <div> <!-- 其他组件... --> <el-table :data="tableData" border stripe style="width: 100%"> <!-- 定义... --> <!-- ... --> <!-- 开启筛选功能 --> <el-table-column prop="columnProperty" label="Column Name"> <!-- 添加筛选器组件 --> <template #default="{ row }"> <!-- 这里可以根据需要自定义筛选器的展现形式 --> <el-input v-model="row.columnProperty" /> </template> </el-table-column> <!-- 其他... --> <!-- ... --> </el-table> <!-- 展示筛选结果... --> <!-- ... --> </div> </template> <script setup> import { ref } from 'vue'; const tableData = [ // 表格数据... ]; // 示例筛选函数,用于处理输入的文本并与数据匹配 function filterData(inputText) { return tableData.filter(item => item.columnProperty.toLowerCase().includes(inputText.toLowerCase())); } // 使用筛选结果更新表格数据 watchEffect(() => { const inputText = document.querySelector('#yourInputId').value; if (inputText) { tableData = filterData(inputText); } }); </script> ``` 在这个例子中: - 我们首先引入了 `ref` 和 `watchEffect` 来管理输入值,并监听变化。 - 接着我们创建了一个名为 `filterData` 的函数来执行实际的过滤操作。 - 最后,我们监听输入框的变化,每次输入发生变化时,会触发 `filterData` 函数并更新表格数据以展示匹配的结果。 #### 2. 配置筛选效果 你可以调整 `el-table` 的其他属性来优化筛选体验,比如设置筛选字段的样式、提示信息等。例如: - **启用即时搜索** (`filterable`):这将允许用户在输入时立即看到筛选结果。 - **控制是否显示筛选器** (`showHeader=true`):确保在表格头部显示筛选选项。 - **定制筛选器**:除了默认的下拉菜单外,你可以使用模板插槽来自定义筛选器的外观和交互。 ### 相关问题: 1. 怎样在`el-table`中实现动态筛选条件的选择? 2. 如何在`el-table`中加入排序功能以配合筛选? 3. 当`el-table`数据量很大时,如何优化筛选性能避免卡顿?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

森源香槟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值