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