SmartTable简介
作者:熊水林
一、 起源
“SmartTable”为何许人?顾名思义,Smart为“灵活的、巧妙的”之意,SmartTable则是为网页定制的一个极具个性的中国式报表。它创作的初衷源于作者一段项目经历,部分的灵感也来源于当时公司级的一个开发平台(暂不署名),但绝没有Copy里面的一行代码,而相比起来在布局方面更具一些优势,如:多表头合并、合并数据列、行列不固定、数据监视等。
SmartTable在初出一个稳定版本后,除了在当时的那个项目中使用外,完全转入了地下升级改造,以后的版本纯属个人产品,因此升级的也比较缓慢。时至现在有两年光阴,仍没有完全封版,这或许是坏事同样也是好事,因为总有值得期待的东西。
SmartTable使用的是纯手工JS、DOM、AJAX等众多Web2.0技术,里面集成了作者创作的多个公共js组件,在作者研发的过程中就力求兼容多种浏览器,这一点是通过prototype这一js framework来实现的,感谢它的发明者。
二、 版本
V1.0,原始版本,完成最重要的几个功能:可以交互的增删改表格的数据行。
V2.0,与V1.0有一个较大的差异,就是“固定表头”,为了支持固定表头,SmartTable从一个HTML table重构为五个table,这是一个重大的里程碑式的改变,重构之后,原有的大部分接口仍保留,但界面操作上更趋合理,也更加注重了性能的改善(比如表头更新是可选的)。
V2.5,初步的数据监听功能,比如:数据超过规定范围用不同颜色显示、超长数据缩略显示、记住修改行等。
V3.0,即将完成的功能,见下章说明。
三、 功能
“SmartTable”到底有哪些功能呢?不妨先看一下它的注释:
说明:
1、 可编辑输入框HtmlEditor可以为SmartTable任何一列添加任何一种HTML的控件,包括text INPUT、RADIO、CHECKBOX、SELECT等;
2、 排序,点击某些列的标题,可以将表格按该行数据的大小顺序重新调整行;
3、 显示行号、光标:当前编辑行的第一显示列有一个符号,并且当前行高亮显示;
4、 增加、删除:对外提供接口,可以方便的增、删若干行;
5、 合计行:支持表格数据的统计功能,如果是数值型数据,合计行为他们的和,否则显示“---”字样;
6、 自定义公式列:支持简单的四则运算,比如“$C1+$C2”,表示该列的值是第一列和第二列之算术和,当修改相关行时,公式列能够自动更新;
7、 固定表头:是指类似于Excel冻结窗口的效果,当表格的数据行(列)多于显示的区域长(宽)时,可以指定若干列,使得移动水平滚动条时仍能固定显示出来,同理,当移动竖直滚动条时,表格的标题也能固定在页头;
8、 分页:这里有客户端分页和服务端分页结合,“上页|下页”为客户端分页,“前十页|后十页”作服务端分页。
9、 隔行表色:按照表格行号的奇偶性将行的背景交互变化,背景颜色可以调整,或者变化的行数也可以变化,比如每三行换一次背景色;
10、 校验数据类型:在对HtmlEditor输入数据时即校验(可否为空、取值范围等)
11、 缩略显示数据列:当数据长度超过列定义宽度时,只显示数据文本的一部分,当鼠标停留时,会提示全部文字。
12、 数据越界警示:用户自定义一组规则,数据在不同区间内以不同颜色显示,包括手工修改数据时实时变换。
13、 记忆修改行:。
14、 取消一列显示:
15、 手工调整、列宽自动调整:
16、 JSON数据:
17、 转换成图表Chart:
18、 License支持:作者按IP、使用天数生成License,没有,对不起,请尊重我的辛苦劳动。
四、 效果
五、 调用方式
1、JS调用方式(很土,适用于客户端交互):
2、taglib(页面一次性载入)
六、 后续规范
为了简化JSP的调用,如果不需用户交互,从调用方式上讲,应该提供tag的形式,用户只需简单的设置若干属性,就能展示出期望的效果。在之后的版本中,我会扩展现有两个标签的属性(从命名上要接近习惯用辞)、也会提供更多的标签来展现一些交互的按钮;进一步的研究将会放在支持图形展现上!
七、 后记
SmartTable是作者历经无数个不眠之夜、经受项目档期考验的情况下完成的,因此对作者心身推残也非普通作品可比。V2.0+的每次升级,都需要从头阅读代码和反复回归测试,每一次都是自我肯定和否定的交织。正如每一个执着的Java/Web程序员,作者亲身体验到孤独与不解,因此会倍加珍惜现今来之不易的成果,同时也企望作品能成为商业化的工具得到更多的用户使用并认可。
因此当你在网络上能够下载到盗版/破解的SmartTable时,希望你会主动地放弃使用它,如果还会主动检举并劝说制作者,将会得到作者一生的鸣谢;作者更不希望你花更多的时间去阅读并修改它,因为它对你来说是全新的一个陌生宝贝,做到了然于心并非容易之事,反之你只需要花费少量的金子,就可以生下无尽的煎熬。这是多么划算并具功德的事啊!
SmartTable的作者只有treeClimber@csdn一个人,缺陷在所难免,因此希望更资深的大侠能够容忍并给予指导,不尽感激!