I think orderby should be fields, not field names. that is different
for columns which should be names and not fields... I will fix this.


On Sep 23, 3:18 pm, Jim Steil <[email protected]> wrote:
> Hi
>
> I'm using and really liking SQLFORM.smartgrid.  However, I'm having
> issues with the sorting, particularly on the grids for the related tables.
>
> Here is my scenario.
>
> I have a membership database and display a grid of members.
>
> grid = SQLFORM.smartgrid(db.member, columns=columns, csv=False,
> details=False)
>
> I want to set my orderby for the members to go by lastName, firstName.  
> To do so, I try this:
>
> orderby = ['member.lastName, member.firstName']
> grid = SQLFORM.smartgrid(db.member, columns=columns, csv=False,
> details=False, orderby=orderby)
>
> This works fine for sorting the member list, but when I click on one of
> the related table buttons (memberCampaign in this case) in the last
> column, I get the following:
>
> Traceback (most recent call last):
>    File "C:\dev\web2py\gluon\restricted.py", line 194, in restricted
>      exec ccode in environment
>    File "C:/dev/web2py/applications/test/controllers/default.py", line
> 121, in <module>
>    File "C:\dev\web2py\gluon\globals.py", line 149, in <lambda>
>      self._caller = lambda f: f()
>    File "C:\dev\web2py\gluon\tools.py", line 2454, in f
>      return action(*a, **b)
>    File "C:/dev/web2py/applications/test/controllers/default.py", line
> 105, in members
>      memberCampaign='Campaigns'))
>    File "C:\dev\web2py\gluon\sqlhtml.py", line 1767, in smartgrid
>      user_signature=user_signature,**kwargs)
>    File "C:\dev\web2py\gluon\sqlhtml.py", line 1588, in grid
>      rows = dbset.select(left=left,orderby=orderby,limitby=limitby,*fields)
>    File "C:\dev\web2py\gluon\dal.py", line 5697, in select
>      return self.db._adapter.select(self.query,fields,attributes)
>    File "C:\dev\web2py\gluon\dal.py", line 1225, in select
>      sql = self._select(query,fields,attributes)
>    File "C:\dev\web2py\gluon\dal.py", line 1201, in _select
>      orderby = xorify(orderby)
>    File "C:\dev\web2py\gluon\dal.py", line 5637, in xorify
>      orderby2 = orderby2 | item
> TypeError: unsupported operand type(s) for |: 'str' and 'str'
>
> If I click on a different related table (memberTag) in the last column,
> I get this:
>
> Traceback (most recent call last):
>    File "C:\dev\web2py\gluon\restricted.py", line 194, in restricted
>      exec ccode in environment
>    File "C:/dev/web2py/applications/test/controllers/default.py", line
> 121, in <module>
>    File "C:\dev\web2py\gluon\globals.py", line 149, in <lambda>
>      self._caller = lambda f: f()
>    File "C:\dev\web2py\gluon\tools.py", line 2454, in f
>      return action(*a, **b)
>    File "C:/dev/web2py/applications/test/controllers/default.py", line
> 105, in members
>      memberCampaign='Campaigns'))
>    File "C:\dev\web2py\gluon\sqlhtml.py", line 1767, in smartgrid
>      user_signature=user_signature,**kwargs)
>    File "C:\dev\web2py\gluon\sqlhtml.py", line 1588, in grid
>      rows = dbset.select(left=left,orderby=orderby,limitby=limitby,*fields)
>    File "C:\dev\web2py\gluon\dal.py", line 5697, in select
>      return self.db._adapter.select(self.query,fields,attributes)
>    File "C:\dev\web2py\gluon\dal.py", line 1233, in select
>      rows = response(sql)
>    File "C:\dev\web2py\gluon\dal.py", line 1223, in response
>      self.execute(sql)
>    File "C:\dev\web2py\gluon\dal.py", line 1309, in execute
>      return self.log_execute(*a, **b)
>    File "C:\dev\web2py\gluon\dal.py", line 1304, in log_execute
>      ret = self.cursor.execute(*a,**b)
>    File "C:\dev\web2py\gluon\contrib\pymysql\cursors.py", line 108, in
> execute
>      self.errorhandler(self, exc, value)
>    File "C:\dev\web2py\gluon\contrib\pymysql\connections.py", line 184,
> in defaulterrorhandler
>      raise errorclass, errorvalue
> InternalError: (1054, u"Unknown column 'member.lastName' in 'order clause'")
>
> If I take the orderby out of the SQLFORM.smartgrid call, then it all
> works fine.
>
> My question is whether or not there is a way to control the orderby
> clause for the related tables.
>
>      -Jim

Reply via email to