- 浏览: 171712 次
- 性别:
- 来自: 福州
文章分类
最新评论
-
mncc:
太好了!!!Mark一下!不过貌似那个冒泡的还少个右下角吧? ...
Google Maps 图标地址收藏 -
ivorytower:
去年5月捡了命回来,现在不评论那些豆腐渣工程……
汶川地震留给我们什么?单单建什么地震纪念馆是没有用的 -
lgx2351:
wtusmchen 写道blog写的不错啊,以后多过来学习:) ...
js学习笔记2-函数 -
wtusmchen:
blog写的不错啊,以后多过来学习:)
js学习笔记2-函数
在做应用开发中,最经常的操作是到后台数据库去获取数据,在前台用自定义grid标签来显示数据。对自定义标签不是很了解的初学者可能对自定义grid的实现有些迷惑,不知道数据库取出来的数据是怎么显示在自定义grid里的。其实,实现的过程是:把从数据取出来的结果集放在request里,自定义标签里说白了就是对这个结果集进行构造成<table><tr><td></td></tr></table>的形式显示出来就可以了。
在这里,我们不考虑自定义标签的实现,就只是把整个从后台读数据到前台显示的过程说一下。
一、前台部份:
<table width="100%" border="1" bordercolor="#708090" cellspacing="0" cellpadding="0"> <tr style="background-color: #BDD3E7;"> <td>标题</td> <td>内容</td> <td>时间</td> <td>操作</td> </tr> <logic:notEmpty name="GenBanRec"> <logic:iterate id="element" name="GenBanRec"> <tr> <td style="color: #0B4A8D;width: 130px;"> <%=((Hashtable) element).get("GEN_BAN_TITLE")%> </td> <td style="color: #0B4A8D;"> <%=((Hashtable) element).get("GEN_BAN_CONT")%> </td> <td style="color: #778899;width: 100px;"> <%=((Hashtable) element).get("UPDATE_DATE")%> </td> <td style="width:40px;"> <input type="button" id="genBanLocate" value="定位"/> </td> </tr> </logic:iterate> <table align="right"> <tr> <td> <input type="button" value="上一页" class="button" name="btnpre" disabled="true" onclick="basicOpr.toPage(1);" </td> <td> <input type="button" value="下一页" class="button" name="btnnext" onclick="basicOpr.toPage(2);" </td> </tr> </table> </logic:notEmpty> <logic:empty name="GenBanRec"> <p>已到最后一页!</p> <table align="right"> <tr> <td> <input type="button" value="上一页" class="button" name="btnpre" onclick="basicOpr.toPage(1);" </td> <td> <input type="button" value="下一页" class="button" name="btnnext"disabled="true" onclick="basicOpr.toPage(2);" /> </td> </tr> </table> </logic:empty> </table> <input type="hidden" id="CUR_PAGE" name="CUR_PAGE" />
以上代码有注意的地方如下:
1. 样式方面:用border="1" bordercolor="#708090"来做边线;用text-align: center来使得tr的标题居中。
2. 主要有到了struts的logic:empty和迭代标签logic:iterate标。logic:empty用于判断数据集是否为空,当不为空时迭代数据集。
3. 隐藏域CUR_PAGE用于时时记录翻的页数。
二、后台部份:
后台主要是获取数据,把得到的数据集放在request里。先说后台获取数据,主要是sql的写法,通过每页显示的数据量(iperpage)和当前所处的页数(icurpage)来得到要获取哪些数据:
if("1".equalsIgnoreCase(dir)){//上一页 sql += " AND TT.ROWNO>"+(icurpage-2)+"*"+iperpage+" AND TT.ROWNO<="+(icurpage-1)+"*"+iperpage+""; }else if("2".equalsIgnoreCase(dir)){//下一页 sql += " AND TT.ROWNO>"+icurpage+"*"+iperpage+" AND TT.ROWNO<="+(icurpage+1)+"*"+iperpage+""; }else if("0".equalsIgnoreCase(dir)){//第一页 sql += " AND TT.ROWNO>0 AND TT.ROWNO<="+iperpage+""; }
把数据放在list里,再把list放在request里的代码是重点,这段代码使得前台的table构造得以实现,代码如下:
private List paramToList(param_bean param) throws Exception { List list = new ArrayList(); try { RowSet rs = (RowSet) param.crs; ResultSetMetaData rsmd = rs.getMetaData();//得到ResultSetMetaData rs.beforeFirst();//把指针放到第一条记录的前面 while (rs.next()) {//循环rowset集合 Hashtable map = new Hashtable(); for (int i = 1; i <= rsmd.getColumnCount(); i++) { Object val = rs.getObject(i); if (val == null) { val = new String(); } map.put(rsmd.getColumnName(i), val); } list.add(map); } } catch (Exception ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); } return list; }
以上代码分析:
1. paramToList()主要
把
ejb
取得到的数据集的每一行列名和列值放到
hashtalbe
中,再把这个
hashtable
放到
list
里,返回
list
。
2.通过rowset.getMetaData()来得到ResultSetMetaData,
ResultSetMetaData可以得到列名(rsmd.getColumnName(i))和列数(rsmd.getColumnCount())。
3.
通过
rs.getObject(i)得到单元格的值。
三:功能扩展
1.
在上一页下一页的基础上,需要增加定位到第几页,首页,尾页的功能,其实实现的方法大概差不多。
2.
增加一个隐藏域用于保存需要查询的所有数据集共有多少页,当到达最后一页时不能再让用户点击下一页了,也不用提示“最后一页”了。
四:最终的效果大概如下(测试数据):
发表评论
-
在一个定时器里频繁发ajax请求
2011-04-11 10:07 1735在一个定时器里频繁发ajax请求,最好设置一个全局变量,当请求 ... -
前台开发总结
2011-01-12 10:35 7721、如果在频繁地发送ajax请求,最好在前面的请求发送完成返回 ... -
TD中长串英文字母不能自动换行而汉字却可以自动换行
2010-12-23 10:06 1914例如:aaaaaaaaaaaaaaaaaaaaaaaaaaaa ... -
Google Maps 图标地址收藏
2010-11-27 10:46 2783Google Maps 图标 - ... -
js乱码
2010-05-30 16:08 01)在同一个工程下没有问题,可是如果跨工程的话,且引入的js有 ... -
ajax请求提供接口的讨论
2009-12-26 15:33 1032要提供一个查询某点周边的最近设施的功能给同事,在gis端的实现 ... -
ie8与ie6取form的讨论
2009-12-16 10:49 1371多frames下,在ie6下通过frames[i]为取得某个f ... -
把一个jsp分为两个div布局记录
2009-12-15 16:41 5591一个jsp页面想分成左右两块分开显示两块内容。这种效果很不错, ... -
js取整数四舍五入
2009-11-21 22:08 3388http://blog.csdn.net/Feiin/arch ... -
读“javascript权威指南”笔记(更新中。。。)
2009-11-14 13:00 0第一章: 第二章: 第三章: 第四章: 第五章: 第 ... -
grid拖动列头改变列宽
2009-10-21 17:19 1566grid中,当某一单元格的内容很多时,要能够拖动grid标题行 ... -
js常用功能-drag功能总结
2009-09-18 13:50 1195在做web开发中,拖动一个元素是很常见的功能,特别是对于浮动层 ... -
常用功能-tip相关知识总结
2009-09-18 08:48 1200在应用开中很常用的功能是tip,比如鼠标放在某个需要说明的元素 ... -
js学习笔记4-事件和事件处理
2009-09-16 22:18 9871. 总述: 本章将讲三种完全不同的不兼容的事件处理模型 ... -
grid里用右键来实现功能菜单
2009-09-15 20:22 1183在自定义grid中,如果一个grid的列很多,窗口无法显示这么 ... -
js学习笔记3-构造函数、类和原型
2009-09-06 16:18 26583. 构造函数、类和原型总述:对象是我们很熟悉的,常在程序中用 ... -
gird分页时form与url参数的探讨
2009-09-05 22:35 1142大家可能很常用一个查 ... -
js学习笔记2-函数
2009-09-02 23:01 13802. 函数 2.1函数直接量函数直接量是用作表达式,而不是用作 ... -
下拉提示文本框
2009-08-24 18:46 1680文本框在当用户输入时,常常需要把相近的信息提示给用户,以方便用 ... -
js学习笔记1-对象和数组
2009-08-19 23:03 8461. 对象和数组 总述对象 ...
相关推荐
类似Excel的GRID类似Excel的GRID类似Excel的GRID类似Excel的GRID
Extjs4下拉菜单中用Grid显示,有单选,和多选两个控件,完美通用代码控件,绝对让你好用,值得收藏^-^
两种方法实现PropertyGrid中的枚举显示为中文,在枚举项中若定义了Description,则显示Description,没有定义直接显示枚举name。代码可以直接使用。
在网上找了一些PropertyGrid的文章,也有可以实现多语言版本的,但是那种方法使PropertyGrid无法传值,没有实际意义。这个demo可以将CategoryName、PropertyName、PropertyDescription设置多国语言。并且不会出现...
.net C# PropertyGrid 显示下拉列表
在C#2019中,将XML结点动态映射为属性集,然后使用PropertyGrid加载并显示。支持父结点的名称自动映射为Category(目录).
c# PropertyGrid中复杂类型自定义显示(装)自用
AxioGrid与.NET ashx实现类似于Ext Grid的分页、排序、过滤等功能
手动动态添加 PropertyGrid 的数据行并显示 C# (非属性绑定方式)
PropertyGrid 下拉式和弹出编辑框的实现
Flex GridRow控件实现HTML样式类似的表单功能;
在网站BS上面可以实现tree的表格显示
ListView控件实现grid,代码编写中如果需要,可以将listview的绘制方式设置为ownerdraw根据自己的需要绘制需要的样式。
jquery ui实现的grid.包内包含jquery-ui-1.9.2.custom和一个其grid实例
C# 自定义属性在propertyGrid控件中显示 演示demo
LearningExtJS 第五章节的翻译
奶奶的,搞了我好久..找了N多资料,,终于搞定了
主要介绍了使用vue实现grid-layout功能的代码讲解,需要的朋友可以参考下
这两天项目需要,临时做了一个,没有封装,该grid可以实现列和行的自定义添加和删除,包括修改标题,以及列的右击添加事件。希望对你们有所帮助!双击列名可以对列名进行修改,右键列名可以选择左侧和右侧添加列以及...