You can do something like this:
class Paginator(DIV):
items_per_page = 10
records = 100
def limitby(self):
from gluon import current
page =
self.page=int(
current.request.vars.page or 0)
return (self.items_per_page*page,self.items_per_page*(page
+1))
def xml(self):
from gluon import current
pages,rem = divmod(self.records,self.items_per_page)
if rem: pages+=1
if
self.page>0:
self.append(A('first',_href=URL(args=current.request.args,vars=dict(page=0))))
if
self.page>1:
self.append(A('prev',_href=URL(args=current.request.args,vars=dict(page=self.page-1))))
if
self.page<pages-2:
self.append(A('next',_href=URL(args=current.request.args,vars=dict(page=
self.page
+1))))
if
self.page<pages-1:
self.append(A('last',_href=URL(args=current.request.args,vars=dict(page=pages-1))))
return DIV.xml(self)
def index():
p=Paginator()
p.items_per_page=5
p.records=db(query).count()
rows = db(query).select(limitby=p.limitby())
return dict(rows=rows, paginator=p)
{{extend 'layout.html'}}
{{=SQLTABLE(rows)}}
{{=paginator}}
customize the xml function above to make it look better!