# layui表格列筛选示例扩展 **Repository Path**: qaz1123/table-filter ## Basic Information - **Project Name**: layui表格列筛选示例扩展 - **Description**: layui表格列筛选示例 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-20 - **Last Updated**: 2026-03-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # tableFilter - layui 表格列筛选扩展 ## 实列展示   为 layui table 提供类似 Excel 的列内容筛选功能,支持多选、搜索、多表格实例。 ## 功能特点 - ✅ 支持多表格实例,每个表格独立管理筛选状态 - ✅ 支持列内容多选筛选 - ✅ 支持关键字搜索过滤选项 - ✅ 支持全选、清空、反选操作 - ✅ 筛选后自动重载表格数据 - ✅ 支持手动设置/获取筛选条件 - ✅ 筛选图标激活状态高亮显示 - ✅ 支持客户端数据(data)和服务端数据(url)两种模式 - ✅ 更多功能请自行拓展 ## 目录结构 ``` table-filter/ ├── js/ │ ├── lay-module/ │ │ ├── tableFilter/ │ │ │ ├── tableFilter.js # 核心文件 │ │ │ └── tableFilter.css # 样式文件 │ │ ├── searchFormTpl/ │ │ │ ├── searchFormTpl.js # 搜索表单模板模块 │ │ │ └── searchFormTpl.css # 搜索表单样式 │ │ └── toolbarTpl/ │ │ ├── toolbarTpl.js # 工具栏模板模块 │ │ └── toolbarTpl.css # 工具栏样式 │ └── lay-config.js # layui 扩展配置 ├── lib/ │ └── layui-2.13.5/ # layui 框架 ├── server.js # Node.js 服务端模拟接口 ├── table-filter-demo.html # 客户端数据示例页面 ├── search-page.html # 服务端数据示例页面(高级搜索) └── README.md ``` ## 快速开始 ### 1. 引入文件 确保已引入 layui 框架,然后在 `lay-config.js` 中配置扩展: ```javascript layui.config({ base: rootPath + "lay-module/", version: true }).extend({ tableFilter: 'tableFilter/tableFilter', searchFormTpl: 'searchFormTpl/searchFormTpl', toolbarTpl: 'toolbarTpl/toolbarTpl' }); ``` ### 2. 基本使用 在 `table.render` 的 `done` 回调中调用 `tableFilter.render`: **客户端数据模式(推荐):** ```javascript layui.use(['tableFilter', 'table'], function() { var tableFilter = layui.tableFilter; var table = layui.table; var staticData = [ {id: 1, username: '张三', city: '北京', status: '正常'}, {id: 2, username: '李四', city: '上海', status: '正常'} ]; var cols = [[ {field: 'username', title: '用户名', filter: true}, {field: 'city', title: '城市', filter: true}, {field: 'status', title: '状态', filter: true} ]]; table.render({ elem: '#myTable', id: 'myTable', data: staticData, cols: cols, done: function(res, curr, count) { tableFilter.render('myTable', cols, {data: staticData}); } }); }); ``` **服务端数据模式:** ```javascript table.render({ elem: '#myTable', id: 'myTable', url: '/api/table-data', page: true, cols: cols, done: function(res, curr, count) { tableFilter.render('myTable', cols, {url: '/api/table-data'}); } }); ``` ### 3. 启用列筛选 只需在列配置中添加 `filter: true` 即可为该列启用筛选功能: ```javascript var cols = [[ {field: 'name', title: '名称', filter: true}, // 启用筛选 {field: 'status', title: '状态', filter: true}, // 启用筛选 {field: 'email', title: '邮箱'} // 不启用筛选 ]]; ``` ## 启动项目 ### 方式一:客户端数据模式(无需启动服务) 直接用浏览器打开 `table-filter-demo.html` 文件即可运行。 ```javascript // 客户端数据模式 tableFilter.render('demoTable1', cols1, {data: staticData}); ``` ### 方式二:服务端数据模式(需要启动 Node 服务) **命令行启动:** ```bash # 进入项目目录 cd table-filter # 启动服务 node server.js ``` **VSCode 终端启动:** 1. 在 VSCode 中打开终端(Terminal -> New Terminal) 2. 输入以下命令启动服务: ```bash node server.js ``` 启动成功后会显示: ``` Server running at http://localhost:8080/ API endpoint: http://localhost:8080/api/table-data Demo page: http://localhost:8080/ ``` 打开浏览器访问 http://localhost:8080/search-page.html ```javascript // 服务端数据模式 tableFilter.render('dataTableFilter', cols1, {url: '/api/table-data'}); ``` ## API 文档 ### tableFilter.render 参数说明 | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | tableId | String | 是 | 表格ID | | cols | Array | 是 | 列配置数组 | | options.data | Array | 否 | 客户端静态数据,与 url 二选一 | | options.url | String | 否 | 服务端接口地址,与 data 二选一 | ### 方法列表 | 方法 | 参数 | 说明 | |------|------|------| | `init(options)` | Object | 初始化表格筛选实例 | | `render(tableId, cols, options)` | String, Array, Object | 渲染筛选功能,在 table.render 的 done 回调中调用 | | `clearFilter(tableId)` | String | 清除指定表格的所有筛选条件 | | `getFilter(tableId)` | String | 获取当前筛选条件,返回 `{field: [values]}` | | `setFilter(tableId, filterObj)` | String, Object | 手动设置筛选条件并应用 | | `getInstance(tableId)` | String | 获取表格实例对象 | | `destroy(tableId)` | String | 销毁实例,不传参数则销毁所有实例 | ### 方法示例 ```javascript // 清除筛选 tableFilter.clearFilter('myTable'); // 获取筛选条件 var filter = tableFilter.getFilter('myTable'); // 返回: {city: ['北京', '上海'], status: ['正常']} // 设置筛选条件 tableFilter.setFilter('myTable', {city: ['北京', '上海']}); // 销毁实例 tableFilter.destroy('myTable'); ``` ## 完整示例 ### 客户端数据示例(table-filter-demo.html) ```html