??? 在工作中,常常会有需要用表格来展示获取的数据,在这里记下我目前用过的几种展示方法:
一、用函数循环打印显示
??? 这个可以说是比较手工的方法,当你取到数据后,写一个循环函数用于打印数据,这个方法在类似JSP、ASP上均可以使用,具体说来就是打印网页,例如下面的代码:
<%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance; //以下连接数据库代码省略 while(rs.next){ %> <tr> <td><%=rs.getString("name");%></td> <td><%=rs.getString("sex");%></td> </tr> <%}%>
??如上就在页面上循环打印出了一张表格,写出了我们从数据库获取的数据。
?
二、采用AJAX控件来实现
??? 网上有很多通过在前台调用后台产生的数据来填充表格的AJAX控件,我使用过的是Jquery flexgrid,这个个比较简单的控件,可以很方便地让你以漂亮的界面来展示数据,并有动态分页功能,其主要属性如下:
?? 1. height: 200, //flexigrid插件的高度,单位为px??
?? 2. width: ‘auto’, //宽度值,auto表示根据每列的宽度自动计算??
?? 3. striped: true, //是否显示斑纹效果,默认是奇偶交互的形式??
?? 4. novstripe: false,??
?? 5. minwidth: 30, //列的最小宽度??
?? 6. minheight: 80, //列的最小高度??
?? 7. resizable: true, //是否可伸缩??
?? 8. url: false, //ajax方式对应的url地址??
?? 9. method: ‘POST’, // 数据发送方式??
? 10. dataType: ‘xml’, // 数据加载的类型??
? 11. errormsg: ‘Connection Error’,//错误提升信息??
? 12. usepager: false, //是否分页??
? 13. nowrap: true, //是否不换行??
? 14. page: 1, //默认当前页??
? 15. total: 1, //总页面数??
? 16. useRp: true, //是否可以动态设置每页显示的结果数??
? 17. rp: 15, // 每页默认的结果数??
? 18. rpOptions: [10,15,20,25,40],//可选择设定的每页结果数??
? 19. title: false,//是否包含标题??
? 20. pagestat: ‘Displaying {from} to {to} of {total} items’,//显示当前页和总页面的样式??
? 21. procmsg: ‘Processing, please wait …’,//正在处理的提示信息??
? 22. query: ”,//搜索查询的条件??
? 23. qtype: ”,//搜索查询的类别??
? 24. nomsg: ‘No items’,//无结果的提示信息??
? 25. minColToggle: 1, //minimum allowed column to be hidden??
? 26. showToggleBtn: true, //show or hide column toggle popup??
? 27. hideOnSubmit: true,//隐藏提交??
? 28. autoload: true,//自动加载??
? 29. blockOpacity: 0.5,//透明度设置??
? 30. onToggleCol: false,//当在行之间转换时??
? 31. onChangeSort: false,//当改变排序时??
? 32. onSuccess: false,//成功后执行??
? 33. onSubmit: false // 调用自定义的计算函数??
下面是一个简单的例子:
需要导入文件: flexigrid.css、jquery.js、flexigrid.js 页面添加代码: <div class="bborderx"> <table id="flex1" style="display:none"></table> </div> js代码: $("#flex1").flexigrid ( { url: 'infoIssue/InfoIssue!show.action', dataType: 'json', colModel : [ {display: '编号', name : 'issueid', width : 60, sortable : true, align: 'center'}, {display: '标题', name : 'caption', width : 120, sortable : true, align: 'left'}, {display: '是否置顶', name : 'maketop', width : 120, sortable : true, align: 'left'}, {display: '是否发布', name : 'issued', width : 120, sortable : true, align: 'left'} ], buttons : [ {name: '增加', bclass: 'add', onpress : test}, {name: '删除', bclass: 'delete', onpress : test}, {separator: true} ], searchitems : [ {display: '标题', name : 'caption', isdefault: true} ], sortname: "issueid", sortorder: "asc", usepager: true, title: '新闻发布 ', useRp: true, rp: 1, showTableToggleBtn: true, width: 600, height: 300 } ); function test(com,grid) { if (com=='删除') { confirm('是否删除这 ' + $('.trSelected',grid).length + ' 条记录吗?') } else if (com=='增加') { alert('增加一条!'); } }
?
三、使用普元EOS中封装的Datacell控件
??? 和第二种方法类似,使用控件结合EOS的业务逻辑来实现,其优点主要是能直接在表格中对展现的数据进行修改,具体的使用方法参见EOS的帮助文档。