Hi Anthony, I thought I would try this, but getting the following error: <type 'exceptions.NameError'>(global name 'selected_true_callback' is not defined) It would be great if you could explain what I am doing wrong
thanks Anthony On Thursday, 27 October 2016 03:20:30 UTC+11, Anthony wrote: > > Note, the "searchable" argument can be a custom callable -- so, you can > create a custom function that first calls the default internal query > builder to get the query that filters the records, then run the update > using that query, and then simply return the query for use by the grid. > Here is an example: > > def index(): > grid_query = db.mytable.id > 0 > selectable=[('Set Selected True', selected_true_callback), > ('Set All True', all_true_callback)] > if 'keywords' in request.get_vars: > selectable.append(('Set Filtered True', lambda r: None)) > > def update_filtered(sfields, keywords): > search_query = SQLFORM.build_query(sfields, keywords) > if 'submit_2' in request.post_vars: > db(grid_query & search_query).update(myboolean=True) > return search_query > > grid = SQLFORM.grid(grid_query, selectable=selectable, > searchable=update_filtered) > return dict(grid=grid) > > In the above, "selectable" is a list of tuples defining two or three > buttons corresponding to updating selected, all, or (optionally) filtered > records. The grid will name each button "submit_0", "submit_1", and > "submit_2", respectively. Whenever a search request comes in, the grid will > call update_filtered (passing in the search fields and keywords). This > function first simply calls the built-in query builder, just as the grid > normally would, generating a DAL query for the search. The code determines > if the "Set Filtered True" button was clicked by checking for "submit_2" in > request.post_vars. In that case, it defines the filtered set of records by > applying the main query for the grid in addition to the search query, and > then updates that set of records (note, if your first argument to > SQLFORM.grid is just a table rather than a query, you can skip the > grid_query part of the code). Finally, it returns the search query for the > grid to use as usual. > > Note, in "selectable", the callback function for "Set Filtered True" is > simply a do-nothing lambda function, as there won't actually be any > selected records in this case -- we're just using "selectable" as a > convenient way to add an additional submit button to the grid. > > Anthony > > On Tuesday, October 25, 2016 at 2:35:00 AM UTC-4, Madhavi wrote: >> >> Hi, >> >> I am new to web2py and am working on application with a SQLFORM grid with >> the search feature along with selectable option. I added extra buttons to >> my grid to set a boolean value for selected records using selectable >> feature, and added another button to set a boolean value for all the >> records in the table. Now, I also want to add a button the set this value >> for only filtered records using the search feature. Is there a way using >> which I can refer to the ids of only those records which are filtered >> through the search widget to perform this manipulation only on those >> records? To explain better, I have the below buttons in place: >> >> 1. Set true for all selected records >> 2. Set true for all records >> >> I also want to add an option to: >> >> 3. Set true for filtered records (filtered records refer to the ones >> displayed on performing the search in the grid). >> >> Please let me know if this is possible, >> >> Thanks a ton, >> >> Madhavi >> > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.