It is NOT just search. As I mentioned I also need other "built-in" functionality like pagination, view etc.
On Wed, Oct 24, 2012 at 10:54 AM, Cliff Kachinske <[email protected]> wrote: > Why the redirection? > > grid accepts a "search_widget" parm where you can create your own widget. > Why not figure out how to use that? > > Admittedly the manual doesn't help much, but you have the source code in > gluon/sqlhtml.py. > > > On Tuesday, October 23, 2012 7:48:11 AM UTC-4, Mandar Vaze wrote: > >> Hi, >> >> I recently added a new SQLFORM.grid which is created based on parameters >> selected in previous controller function. >> The query used is based on the request.vars passed from previous >> controller. I can see the grid alright. >> (Something like this http://www.mail-archive.** >> com/[email protected]/**msg30769.html<http://www.mail-archive.com/[email protected]/msg30769.html> >> Except >> instead of SQLTABLE I am using SQLFORM.grid) >> >> Problem : >> The "extended" functionality of SQLFORM.grid doesn't seem to work like >> "View", "Search", and Pagination etc. Since they call the same controller >> (but there are no request.vars this time) >> >> I was able to workaround for "view" where I check if request.args(0) >> =='view', and then redirect to another controller, where record ID is >> available as request.args(2) >> But I don't know what to do for Search and Pagination. >> >> I think there is a better way, and I wouldn't have to "workaround" for >> "view" either. >> >> Here is pseudo-code just to give better idea : >> >> def chooseView(): >> # Form with two drop downs where user chooses parameters for the >> report >> # Similar to index function from the URL provided below >> if form.accepts(request.vars, session): >> >> redirect(URL(r=request, f='viewReport', vars=request.vars)) >> >> >> def viewReport(): >> # Following is hack, wanna get rid of if possible >> if request.args(0) in ['view']: >> >> redirect(URL('default', 'viewRecordDetails', args=request.args,vars >> =request.vars)) >> # Checks like filter1, filter2 exists in request.vars >> filter1 = requesr.vars.filter1 >> filter2 = requesr.vars.filter2 >> >> >> reportQry = db((db.table.field1 == filter1) & (db.table.field2 ==filter2 >> )) >> grid = SQLFORM.grid(reportQry.query, create=False, editable=False,csv >> =False, deletable=False, searchable=True) >> return dict(grid=grid) >> >> >> Problem now if when I click on search, viewReport is called with >> request.vars as follows : >> <Storage {'keywords': 'Text I searched'}> >> >> When I click on View button in the grid, viewReport is called with >> request.args as follows : >> ['view', 'table', '83'] >> I was able workaround this as explained above. >> >> I did not capture data when clicked on one of the numbers in the >> pagination bar. But I guess viewReport is called with some request params. >> >> Please suggest what is the correct way to handle so that "built-in" >> functionality like view, search, pagination etc work. >> >> (On web2py 2.0.9 and 2.0.8 - both have problem - in case it matters) >> >> Thanks in anticipation >> >> -Mandar >> >> >> >> >> >> >> -- > > > > --

