My requirement was to show drop down list for a field generated using GRID 
by using the values defined in another table.

Below is the code used: 

*Models:*

# coding: utf8
db = DAL('sqlite://storage.sqlite')
from gluon.tools import Crud, Auth
auth=Auth(globals(),db)
auth.define_tables(username=False)
db._common_fields.append(auth.signature) ## adds signature fields to all 
tables
db.define_table('ItemRecords', Field('ItemName'))
db.define_table('ItemOwners', Field('ItemName'))

*Controllers:*

def testpage():
    table_name = 'ItemRecords'
    field_name = 'ItemName'
    rows1 = db(db.ItemRecords.ItemName!=None).select()
    opts_dropdown = []
    for row1 in rows1:
        opts_dropdown.append(row1.ItemName)
        opts_dropdown = list(set(opts_dropdown)) # Make it unique
    element_id = 'ItemOwners_ItemName'
    custom_select = SELECT(opts_dropdown, _id=element_id)
    grid = SQLFORM.smartgrid(db.ItemOwners,csv=False,user_signature=False)
    grid.element('input',_id=element_id, replace=custom_select)
    return dict(grid=grid)   

def testpage1():
    grid = SQLFORM.grid(db.ItemRecords,csv=False,user_signature=False)
    return dict(grid=grid)   

*Views :*

{{=grid}}

# For both testpage and testpage1

Now Insert few records to Itemrecords table using testpage1. Try to insert 
new record in ItemOwners table using testpage view, you'll see the drop 
down with the values from ItemRecords table. Add a record and reload 
testpage view, you;ll see that the ItemName record will be seen empty in 
grid.

If I don't use replace in testpage view (To show drop down), then it works 
fine.

Can some one please help me to resolve this issue, by using replace, I am 
getting drop down values, then why are those not getting saved.

-- 
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to