我的思路是用 jquery.ajax 把当前页数、 每个页面的条数、请求哪一页等等信息发送给action ,然后返回结果集,再一一显示。
还有其他方法吗? 有人貌似用自定义标签,利用值栈什么的, 还有其他更好的方法吗,请说明细一点。
楼主如果是想解决问题,楼上的两位的方法都可以,如果是想学习,或者因为JS生成HTML内容的效率问题,可以考虑自己写后台代码,直接生成HTML代码,通过ajax请求后直接使用$('#container').html(htm);来显示,比jqGrid和datagrid控件速度要快很多,我们项目最初用的是datagrid,后来因为效率太低,速度很慢,特别是在IE6下,慢的像蜗牛,后来又改成HTML展现的方式了,通过脚本去实现固定表头和页面内滚动条的效果,页面展示速度非常快。
建议使用easyUI的datagrid
你是用jquery ajax分页啊,那何必自己写呢!推荐jquery jqGrid插件,具体用法如下:
js代码:
[code="java"]
jQuery("#list2").jqGrid({
url:'server.php?q=2',
datatype: "json",
colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],//显示的列头
colModel:[
{name:'id',index:'id', width:55},
{name:'invdate',index:'invdate', width:90},
{name:'name',index:'name asc, invdate', width:100},
{name:'amount',index:'amount', width:80, align:"right"},
{name:'tax',index:'tax', width:80, align:"right"},
{name:'total',index:'total', width:80,align:"right"},
{name:'note',index:'note', width:150, sortable:false}
],//列的参数名
rowNum:10,
rowList:[10,20,30],
pager: '#pager2',//pager
sortname: 'id',
viewrecords: true,
sortorder: "desc",
caption:"JSON Example"
});
jQuery("#list2").jqGrid('navGrid','#pager2',{edit:false,add:false,del:false});
[/code]
html代码:
[code="java"]
以上基本就搞定了,详情请查看官方文档:
[url]http://trirand.com/blog/jqgrid/jqgrid.html[/url]
[url]http://www.trirand.com/blog/[/url]
做页面也就只有两种方式,一种是楼主你开始提的那种传统的jsp,另一种就是用js渲染出的,像jquery,extjs之类的。
所以分页也就以上两种实现方式。
自定义标签什么的,其实就是对你说的第一种方式进行了封装,主要是为了少些代码。
不过“值栈”这东西你一定得了解清楚了。jsp页面上的变量,都是从值栈中获取到的。比如action里取到了一个user对象,jsp上用user.name就是从值栈中获取到user对象的属性。