It's been a while since I've played with smartgrid, but I seem to recall 
that the ID of the record being edited was always the final arg.

And you can treat request.args as a list, so the ID of the record being 
edited is request.args[-1], or so it seems to me.

On Tuesday, November 20, 2012 7:44:09 AM UTC-5, Michael Hall wrote:
>
> In the end I have used a different slightly more messy approach. I am 
> getting the record id from the args by using a conditional to test if it is 
> in one of 2 possible positions.
>
> @auth.requires_login()
> def contact_manage():
>     form = 
> SQLFORM.smartgrid(db.t_contact,linked_tables=['t_courses','t_membership','t_paypal'],
>  
> onupdate=auth.archive, formname="Contact Manager")
>     if request.args(2) == 't_contact':
>         memberId = request.args(3)
>     else:
>         memberId = request.args(2)
>     
>     return locals()
>
> I looked into fetching it using similar code to your link function but it 
> seems you can only request the id of the current record using 
> db.t_contact.id from within the parameters of your SQLFORM.smartgrid 
> request.
>
> Its a dirty hack but it seems to work.
>
> Mike
>
> On Tuesday, 20 November 2012 07:15:22 UTC, Johann Spies wrote:
>>
>> On 19 November 2012 14:58, Michael Hall <pix...@gmail.com> wrote:
>>
>>> Hi Villas
>>>
>>> I like the idea of using a var instead of args but I am still uncertain 
>>> of how I get the ID of the current record I am viewing/editing in smartgrid.
>>>
>>>
>> Here is an example of code I am using where 'auid' represents the id of 
>> the author record:
>>
>>   links = [lambda row: (A(B(T('Edit')), _target = "_blank",
>>                             _href = URL(r = request,
>>                                         c = 'authors',
>>                                         f = 'edit_author',
>>                                         vars = dict(auid = str(row[
>> db.akb_authors.id])))))]
>> query = ...
>> fields = [list of fields]
>>
>> I then call the grid with SQLFORM.grid(query, fields=fields, links=links)
>>
>>
>> Regards
>> Johann
>> -- 
>> Because experiencing your loyal love is better than life itself, 
>> my lips will praise you.  (Psalm 63:3)
>>
>>

-- 



Reply via email to