skip to navigation
skip to content

tw.jqgrid 0.3.2

tosca widget wrapper around jqgrid library

Detailed Documentation

tw.jqgrid documentation

tw.jqmultiselect is a tosca widget wrapper around jquery grid plugin
which can be found here :

the version released with this package is 3.8.1

Use as a grid

in the view controller

from tw.jqgrid import JqGrid
colNames = ['ID','Title', 'Synopsis']
colModel = [
            {'name':'id', 'index':'id', 'width':20, 'align':'right'},
            {'name':'title', 'index':'title','width':100, 'align':'left'},
            {'name':'synopsis', 'index':'synopsis','width':580, 'align':'left', 'sortable':False},
search_options = {
      "caption": "Search...",
      "Find": "Find",
      "Reset": "Reset",
      "sopt" : ['cn', 'bw'],

navbuttons_options = {
                      "edit": False,
                      "add": False,
                      "del": False,

grid_local = JqGrid('movie_list', url='fetch', caption='Movies',
            colNames=colNames, colModel=colModel,
            rowList=[5,10], rowNum=5,
            search_options = search_options,
            navbuttons_options = navbuttons_options,

class MoviesController(BaseRestController):

    def get_all(self):
        pylons.c.grid = grid_local
        return dict(page='all movies')

in the template


now to feed data we need a controller:

from math import ceil

def fetch(self, page=1, rows=10, sidx=1, sord='asc', _search='false',\
          searchOper=u'', searchField=u'', searchString=u'', **kwargs):
    offset = (int(page)-1) * int(rows)
    q = Movie.query
    search_bool = eval(_search.capitalize())
    if (search_bool):
        field = str(searchField)
        field_attr = getattr(Movie, field)
        if searchOper == u'cn':
            q = medias_q.filter(field_attr.contains(searchString))
        if searchOper == u'bw':
            q = q.filter(field_attr.startswith(searchString))

    result_count = medias_q.count()
    total = int(ceil(result_count / float(rows))) # total nb of pages
    column = getattr(Movie.table.c, sidx)
    movies = q.order_by(getattr(column,sord)()).offset(offset).limit(rows)
    rows = [{'id'  :,
             'cell': [,  '<a href="/medias/%s/">%s</a>' % (, movie.title),
                      movie.synopsis]} for movie in movies]
    return dict(page=page, total=total, records=result_count, rows=rows)


this is written for an elixir model, adapt to your need

design it:

tw.jqgrid rely on tw.uitheme for its design, the smooth theme is the default you can use any other theme, or roll your own theme

below a code snippet on how to do that:

from tw.uitheme import lefrog_css, peppergrinder_css
from tw.jqgrid import jqgrid_css, jqgrid_search_css

class CustomGrid(JqGrid):
    css = [peppergrinder_css, jqgrid_css, jqgrid_search_css]

grid_local = CustomGrid(.....


Main developpers

  • Nicolas Laurance <nicolas[dot]laurance[at]gmail[dot]com>

with contributions from

  • Tuomas Peltonen

Change history

New in 0.3


  • added parameter to show/hide collapse button
  • more control of pager options


  • added sortable parameter


  • added parameters to use the grid as a jqTreeGrid
  • more events supported

New in 0.2


  • now relies on the 3.8.2 version of the js lib

New in 0.1


  • added parameter for edit url


  • sortorder has “asc” as default value
  • better example in readme


  • added sortorder param to allow setting of default order thanks to : Tuomas Peltonen


  • added parameters for subgrids


  • added dependency on tw.uitheme for design


  • First Release
File Type Py Version Uploaded on Size
tw.jqgrid-0.3.2.tar.gz (md5) Source 2011-06-10 490KB