TABLE 表格扩展

对原生 TABLE 标签及 TABLE 内的子标签就行了扩展,以满足数据的展示、筛选和编辑需求。TABLE 标签扩展的主要功能有:

TABLE 已是这个组件的第三个重构版本。第一版 DataTable 诞生于 2015年,为表格增加了表头过滤器等属性,可以和当时和 TdEditor 组件配合,用于数据的展示和复选。第二版 DataTable 诞生于 2018 年,为了 Master 项目重写,与 Editor 组件深度整合,一直用到现在。第三个版本在原生 TABLE 标签上进行了扩展,而不再是独立的类。

使用

TABLE 扩展需要以下相关文件:

TABLE 属性

TABLE 组件必须设置data属性,data属性中可以设置接口或 PQL 语句以从后端获取数据。如果不需要从后端获取数据,只是为了使用 TABLE 的扩展属性,则data属性置空即可。data属性的更多信息请查看与数据相关的属性。除了data之外,与数据相关的其他扩展属性还有:

其他的扩展样式扩展属性有:

所有默认样式在/css/root/table.css中找到。

服务器端事件提示信息相关的扩展属性有:

出错信息会使用 Message 的方式进行提醒,如果没有引用root.animation.js,则上面的设置不会生效。

与排序和筛选相关的属性有:

TABLE 标签的原生属性不在这里赘述。

COL 属性

因为基于表格列要增加额外的功能,如筛选、排序或数据编辑等,所以作者对 COL 标签也进行了扩展。新增的扩展属性有:

事件

与其他标签一样,TABLE 标签的事件可以在元素标签上定义,也可以使用事件绑定。作者建议在元素标签上定义,以尽可能减少 Javascript 的编写。

与数据相关事件有:

与数据行相关的事件如下,事件函数均为function(row) {},其中参数row为相关行:

其中onrowdbclick支持服务器端交互

与排序和筛选相关的事件有:

另外,所有非服务器端事件都支持精简事件表达式,下文的例子中会涉及一些。

加载数据方式一

数据表格的意义是为了展示数据,TABLE 扩展后可以动态的从后端获取数据并显示到表格中。除了必须使用data属性外,还需要使用 TEMPLATE 设置数据模板,如上例所示。TEMPLATE 标签的语法规则见数据加载模型。TEMPLATE 会将data属性返回的数据按行显示在表格中。假如data属性返回值的数据结构为:

代码示例:

加载数据方式二

也可以不使用 TEMPLATE 标签加载数据,不过这种方式不如 TEMPLATE 灵活,但支持表格数据的自动无感刷新。这种方式不要设置 TEMPLATE 标签,而是在 COL 标签中设置template属性,如下列中所示。下例中所有两个#包含的内容为多语言符号,如# actor-name #,理解为文本即可。

(数据占位符格式有变化,暂时不可用)

下面是上例的几点说明:

一起说一下meet属性,这里的meet属性设置了一个 Javascript 表达式,this指向当前表格。当找不到td.green时,触发onmeet事件,否则触发onmiss事件。

使用字典数据

上面第一个示例中,property_sourceproperty_format两个字段都使用字典数据,在数据库保存的是nacosproperties,但是这两个数据库保存的值并不容易理解,甚至数据库中经常存储数字格式的字典值。这种情况下就需要将字典值翻译成容易理解的文字,使用 COL 标签的map属性可以完成这个功能。如上面第一例所示,map属性可以设置字典型对应的文本,当表格加载时,自动将字典值翻译成对应的文本。map属性支持 Json 对象和查询字符串两种格式的配置。配置之后nacosproperties对应的文本分别是Nacos配置中心Properties。第二个示例也在 COL 标签中使用了map属性用于对值进行转换。注意转换是单元格中整个内容的转换。

筛选

如果在列上启用了筛选,即,并且还设置了表头(对应的 TH 标签),则表头上会显示一个过滤器图表,双击表头可启动筛选输入。目前只支持输入关键词的筛选,更多功能会在未来加入。来看一下示例:

关于筛选的实现逻辑解释如下:

所以说,表格的列名非常重要,不只为列添加区分标识,也在筛选过程中起传递数据的作用。

排序

文档待完善。

服务器端事件

以筛选的例子解释一下服务器端事件onrowdblclick+的交互过程,例子中设置了一个服务器端事件onrowdblclick+和一个精简事件onrowdblclick+success-,还设置了事件相关属性failure-text,表示一个当请求结果不符合预期时的提示文字。事件执行逻辑如下:

通过服务器端事件及相关属性,可以不用编写 Javascript 的而实现相应的后端处理逻辑。

单元格编辑

文档待完善。


参考链接


微信公众号
码农老吴  |  星源工作室  |  开发月志  |  问题反馈
联系我们:wu@qross.io     手机/微信:18618171102
京 ICP 备 20027445 号
$(h1)!