Hi,

      I have a SQLFORM.grid which displays information about employee 
table. Every employee may have multiple addresses. 
So I have to display multiple address in another grid (address grid) inside 
edit form of the employee grid.


*models/db.py*

db.define_table('employee',
                Field('fname', 'string', label=T("First Name"), 
required=True),
                Field('lname', 'string', label=T("Last Name"), 
required=True),
                Field('email', requires=IS_EMAIL()),
                format='%(email)s')

db.define_table('address',
                Field('employee', db.employee),
                Field('Address', 'text'))

*controllers/default.py*

def _validate_emp_records(form):
    error_exist = False
    if not form.vars.fname:
        form.errors.fname = T("Enter First Name")
        error_exist = True

    if not form.vars.lname:
        form.errors.lname = T('Enter last name')
        error_exist = True

    return not error_exist


@auth.requires_login()
def index():
    """
    example action using the internationalization operator T and flash
    rendered by views/default/index.html or views/generic.html

    if you need a simple wiki simply replace the two lines below with:
    return auth.wiki()
    """
    query = (db.employee.id > 0)
    emp_grid = SQLFORM.grid(query, showbuttontext=False, csv=False,
                            deletable=False)
    address_grid = None

    if request.args(0) == 'edit':
        form = emp_grid.update_form
        emp_id = request.args(2)
        address_query = (db.address.employee == emp_id)
        # show all address in edit form of employee
        address_grid = SQLFORM.grid(address_query, deletable=False,
                                    showbuttontext=False, csv=False)

        if form.process(onvalidation=_validate_emp_records).accepted:
            session.flash = T('Updated %s' % form.vars.id)
            redirect(URL('default', 'index'))
        elif form.errors:
            response.flash = T("form has errors")

    if request.args(0) == 'view':
        form = emp_grid.view_form

    if request.args(0) == 'new':
        form = emp_grid.create_form

    return dict(emp_grid=emp_grid, address_grid=address_grid)


*views/default/index.html*


{{extend 'layout.html'}}

{{=emp_grid}}

{{ if address_grid: }}
 {{ =address_grid}}
{{ pass }}


Here, 
         It shows two edit forms whenever I click on edit icon. [See 
attachment edit_records.png]

Is it possible to display SQLFORM.grid inside view of another SQLFORM.grid?


-- 
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/d/optout.

Reply via email to