jsu系列之表格组件 ---- jsu.Table
作者注:jsu.Table是基于jQuery扩展的原生表格插件,设计理念来源于Element.ui的Table
组件(该UI库基于vue.js,暂时未找到jQuery版本因此在此造轮子)。本文将记录jsu系列所有组件开发过程中遇到的问题和解决思路,欢迎讨论和指正。废话少说,下面开始进入主题!
先看效果
上图为固定表头
+ 嵌套表格
+ 可展开列
+ MVVM编辑表格数据
等功能测试效果。
主要配置代码
<table class="table" data-max-height="500"> <thead> <tr> <th data-type="index" data-text></th> <!-- 注解① --> <th data-type="expand">...</th> <th data-type="selection" data-selection="checkbox"></th> <th data-type="text" data-prop="name">文本</th> <th data-type="enum" data-prop="gender" data-enum='{"MALE":"男","FEMALE":"女"}'>枚举</th> <th data-type="date" data-prop="date" data-date-format="yyyy-MM-dd hh:mm:ss:S" data-text="注册时间"></th> <th data-type="html" data-prop="note">简介</th> <th data-type="html" data-prop="note" data-writable>编辑简介</th> <th data-type="date" data-prop="date" data-date-format="yyyy-MM-dd hh:mm:ss:S" data-writable>编辑注册时间</th> <!-- 注解② --> <th data-type="enum" data-prop="gender" data-writable data-enum='{"MALE":"男","FEMALE":"女"}' data-text="编辑性别"></th> <!-- 注解③ --> <th data-type="template" data-text="操作"></th> </tr> </thead> </table>
- 注解①:
展开行模板
<th data-type="expand"> <!-- 展开行模板 --> <div data-expand> <table class="table" style="color:#AAA; display:none;".../table> </div> </th>
- 注解③:
可编辑单元格模板
<th data-type="enum" data-prop="gender" data-writable data-enum='{"MALE":"男","FEMALE":"女"}' data-text="编辑性别"> <div data-writable> <label> <select name> <option value="MALE">男</option> <option value="FEMALE">女</option> </select> </label> </div> </th>
- 注解③:
单元格内容显示模板
<th data-type="template" data-text="操作"> <div data-template> <a href="javascript:" class="row-data">Get Data</a> <button class="update-name">Update Name</button> </div> </th>
- Javascript主要代码
// 模拟数据 var data = []; for (var i = 0; i < 5; i++) { data.push({ name: 'name_' + (i + 1), gender: 'MALE', date: new Date().getTime(), note: '我是<b>加粗</b>内容', birthday: new Date().getTime() }); } // 应用插件 var table = jsu.Table($('.grid_2'), true, true); table.data(data);
如何使用
详细API可在控制台查阅jsu.Table.dir
或进入/test.../index.html
查阅,这里列出部分内容:
设计目的
作者准备为jsu.Table
实现以下功能:
- 基础表格数据展示(已实现)
- 列顺序调整(已实现)
- 列宽调整(已实现)
- 表头固定(已实现)
- 左侧列固定(已实现)
- 右侧列固定(开发中)
- 用户可配置隐藏/显示部分列数据
- 单元格纵向合并 ---- 合并行
- 单元格横向合并 ---- 合并列
其中4 / 5 / 6
可参考office word
的冻结
功能。组件结构图:
遇到的问题
- 固定表头宽度何时确定 / 以及修正?
开始调整列宽时隐藏$top
,调整结束后显示$top
。由于使用中可能存在内容动态变更(并非通过 table.data API去修改,导致宽度超出当前列宽/行高),通过内部API checkScroll()
来修正。 - 多部件表格时交换列顺序无效(
$top未交换表头
,$main交换正常
)?
在启用固定表头
/列
时,暂时取消列顺序交换功能 - 左侧固定列滚动时机
当启用左侧固定列时如果同时配置了表头固定,通过添加左侧顶部固定表头实现上下滚动 - 左侧固定列与
expand
类型内容如何同步
待修复 - 左侧固定列隐藏滚动条后,鼠标在左侧固定列无法滚动表格
待修复
相关推荐
行吟阁 2020-08-09
表格的现在还是较为常用的一种标签,但不是用来布局,常见处理、显示表格式数据。在HTML网页中,要想创建表格,就需要使用表格相关的标签。<table> <tr> <td>单元格内的文字</td> ...
gufudhn 2020-08-09
玫瑰小妖 2020-06-07
lyg0 2020-05-28
移动开发与培训 2020-08-16
ReunionIsland 2020-08-16
swiftwwj 2020-07-05
pythonclass 2020-06-25
nercon 2020-06-14
pythonclass 2020-06-03
huzijia 2020-05-08
行吟阁 2020-05-11
黎豆子 2020-05-11
玫瑰小妖 2020-05-11
HSdiana 2020-05-10
黎豆子 2020-05-08