Ok, first I tried to make a dictionary: links = { 'db.person':[lambda row: A(T('Delete'),_href=URL("configure","delete",args=["delete", 'db.person', row.id]))], 'db.product':[lambda row: A(T('Delete'),_href=URL("configure","delete",args=["delete", 'db.product', row.id]))], 'db.purchase':[lambda row: A(T('Delete'),_href=URL("configure","delete",args=["delete", 'db.purchase', row.id]))] }
But I could not figure out the links=? argument for SQLFORM.smartgrid. I've been printing the request.args on each pages, so I tried to hardcode based on argument numbers: # request.args(3) == 'purchase.product_id' if not request.args(3) == None: links=[lambda row: A(T('Delete'),_href=URL("configure","delete",args=["delete", 'db.purchase', row.id]))] # request.args(1) == 'product.seller_id' elif not request.args(1) == None: links=[lambda row: A(T('Delete'),_href=URL("configure","delete",args=["delete", 'db.product', row.id]))] else: # request.args(0) == 'person' links=[lambda row: A(T('Delete'),_href=URL("configure","delete",args=["delete", 'db.person', row.id]))] grid = SQLFORM.smartgrid(db.person,linked_tables=['product','purchase'], user_signature=False, deletable=False, csv=False, links=links) This works! And I get the necessary information to process the delete in the proper table after display/confirmation in configure/delete. However, this solution feels like I'm one step away from a real answer. Is there a better way to determine how to pass to links=? Thanks for all your help! Kris On Friday, November 1, 2013 8:26:40 AM UTC-6, Massimo Di Pierro wrote: > > links = {'tablename':[lambda row: > A(T('Delete'),_href=URL("configure","delete",args=["delete", 'tablename', > row.id]))]} > > You can have one item for each tablename, > > On Friday, 1 November 2013 09:02:06 UTC-5, kw...@teradactyl.com wrote: >> >> I have a smartgrid example with delete button removed and a links=links >> dictionary for delete: >> >> links=[lambda row: >> A(T('Delete'),_href=URL("configure","delete",args=["delete", db.person, >> row.id]))] >> >> For children in the smartgrid, the delete URL request args remains the >> parent table name (db.person in this example). >> Is there a way to form links= such that the children will have their >> table name attached to the URL >> (so I delete the child and not the parent)? >> >> I found a horrible way to do this by placing the tablename inside the >> db.py definition to pass to the delete URL >> >> links=[lambda row: >> A(T('Delete'),_href=URL("configure","delete",args=["delete", row.tablename, >> row.id]))] >> >> but this was just an exercise and prone to way to many problems... >> > -- 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/groups/opt_out.