Requirement: When displaying data in a list, there are many items of information that need to be displayed, which makes the table very long horizontally. The display is not clear enough, and users may feel that they cannot grasp the key points when using it. Imagine implementation: the user manually selects whether to hide or display the columns of the table, and the user's selection status is recorded, and the selection status is retained the next time the user enters the table. The effect diagram is as follows: Original: Uncheck the default if you don’t need it: Implementation code: <el-popover placement="right" title="Column filter" trigger="click" width="420"> <el-checkbox-group v-model="checkedColumns" size="mini"> <el-checkbox v-for="item in checkBoxGroup" :key="item" :label="item" :value="item"></el-checkbox> </el-checkbox-group> <el-button slot="reference" type="primary" size="small" plain><i class="el-icon-arrow-down el-icon-menu" />List item display filter</el-button> </el-popover> <el-table :data="attendanceList" @sort-change="sort" highlight-current-row :row-class-name="holidayRow" @selection-change="editAll" ref="multipleTable"> <el-table-column type="selection" width="55" align="center"></el-table-column> <el-table-column label="Basic information of employees"> <el-table-column v-if="colData[0].istrue" align="center" prop="user_id" label="Work No." width="80" fixed></el-table-column> <el-table-column v-if="colData[1].istrue" align="center" prop="name" label="姓名" width="80" fixed></el-table-column> <el-table-column v-if="colData[2].istrue" align="center" prop="age" label="age" width="60"></el-table-column> <el-table-column v-if="colData[3].istrue" align="center" prop="gender" label="Gender" width="80"></el-table-column> <el-table-column v-if="colData[4].istrue" align="center" prop="department" label="Department Name" width="100"></el-table-column> </el-table-column> ...... The data part where js data is stored //List dynamic hiding colData: [ { title: "Work Number", istrue: true }, { title: "Name", istrue: true }, { title: "Age", istrue: true }, { title: "Gender", istrue: true }, { title: "Department Name", istrue: true }, ], checkBoxGroup: [], checkedColumns: [], js method implementation part created() { // Column filtering this.colData.forEach((item, index) => { this.checkBoxGroup.push(item.title); this.checkedColumns.push(item.title); }) this.checkedColumns = this.checkedColumns let UnData = localStorage.getItem(this.colTable) UnData = JSON.parse(UnData) if (UnData != null) { this.checkedColumns = this.checkedColumns.filter((item) => { return !UnData.includes(item) }) } }, // Monitoring column hide watch: { checkedColumns(val,value) { let arr = this.checkBoxGroup.filter(i => !val.includes(i)); // Unchecked localStorage.setItem(this.colTable, JSON.stringify(arr)) this.colData.filter(i => { if (arr.indexOf(i.title) != -1) { i.istrue = false; } else { i.istrue = true; } }); } }, This will make it possible, and the selected status will be recorded when refreshing the page. I originally wanted to add a select all selection box, but it was not implemented in the end. Let's use it this way first. But there must be a better way, I will update it after optimizing it~ This concludes this article about the sample code for implementing dynamic column filtering in vue+element table. For more content on dynamic column filtering in element table, please search previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future! You may also be interested in:
|
<<: Simple usage example of vue recursive component
>>: Two ways to introduce svg icons in Vue
The most understandable explanation of the accura...
Process structure diagram Nginx is a multi-proces...
Table of contents need: Problems encountered: sol...
I believe everyone has played scratch tickets. Wh...
General mobile phone style: @media all and (orien...
Table of contents 01 Introduction to GTID 02 How ...
1. What is As a markup language, CSS has a relati...
The reason for writing this article is that I wan...
Update: Now you can go to the MySQL official webs...
Today, I encountered a problem: the content in the...
Problem description (environment: windows7, MySql...
Table of contents Normal paging query How to opti...
View the dependent libraries of so or executable ...
The computer system has been reinstalled, and the...
Table of contents 1. DOM & BOM related 1. Che...