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.

Reply via email to