From:
http://trac.turbogears.org/turbogears/ticket/719

I've made this decorator to be able to paginate resulsets and
dictionaries without doing any work on the controller.
You just return a resultset from a Object.select(...) (at this state
the query hasn't been made yet) or a dict() and pass its name to the
paginate decorator.
When you pass a SQLObject ResultSet the decorator won't fetch all the
results, it will use the .limit() .order() functions to do it's work.
Which will produce a LIMITed query.

I've also included a new datagrid (PaginateDataGrid) object with a new
template that has automatically adds the page list, but you don't need
this to be able to use it.

Pagination and sorting can't be made easier if you use
PaginateDataGrid, you almost have to do nothing but adding the
decorator.

It even works if you are getting filtering info from a POST on your
controller because it will urlencode all the input_values when you get
the hrefs for the links.

When the decorator is used on a controller tg.paginate will be
available for the template. tg.paginate contains:
tg.paginate.pages - A list of the pages the paginator will show (ex:
[4,5,6,7,8])
tg.paginate.current_page - Current page
tg.paginate.limit - Current rows per page (you shouldn't need this)
tg.paginate.page_count - Number of pages
tg.paginate.order - Current column being sorted
tg.paginate.reversed - If the current sorting is reversed or not
tg.paginate.get_href(x) - Returns the href for a link that will show x
page of the list (ex: <a href="tg.paginate.get_href(1)">Page 1</a>
would create a link to the first page)

The decorator takes these parameters:
@turbogears.paginate(var_name, default_order='', limit=10, max_pages=5,
allow_limit_override=False)
var_name - Is the variable that will be paginated
default_order - Only used when you want to enable sorting, it's the
column name being sorted by default
limit - Is the number of rows per page
max_pages - Is the number of pages that will be returned in
tg.paginate.pages (the default of 5 when seeing a page number 64
tg.paginate.pages would be [62,63,64,65,66]

If you are using the PaginateDataGrid you don't have to worry about
most of this stuff.

Check the demo project!


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/turbogears
-~----------~----~----~----~------~----~------~--~---

Reply via email to