The code in
###################
# RELOAD COMPONENTS grid_course AND grid_pricelist BUT HOW?
###################
should be
response.js = "jQuery('#grid_course,#grid_pricelist').reload()"
could it be easier?
On Sunday, 16 June 2013 09:59:06 UTC-5, step wrote:
>
> In the same page I placed three embedded components, each one with its own
> separate .load file which index.html loads with LOAD().
> 1) form_years, SQLFORM.factory whose controller returns
> dict(form_years=form_years)
> 2) grid_course, SQLFORM.grid whose controller returns
> dict(grid_course=grid_course)
> 3) grid_pricelist, SQLFORM.grid whose controller returns
> dict(grid_pricelist=grid_pricelist)
> The queries in the two SQLFORM.grids depend on variable session.years
> which can be set through form_years when the form is accepted.
>
> So I want to be able to select a value in form_years, submit it and
> automatically update the contents of grid_course and grid_pricelist based
> on the new session.years value, without reloading the whole page but just
> the affected components (the grids .load files).
> Everything is coded and is working beautifully, except for the automatic
> reloading of the grid components. I tried several methods but I failed. I
> don't know how to do it. Is it possible? How?
>
> Thanks in advance
> P:S. This is my first post in the list!
>
> Here is an overview of my code:
> **** Page URL http://127.0.0.1:8000/app/course/index
>
> **** Component views
> ** views/course/index.html
> {{extend 'layout.html'}}
> {{=BEAUTIFY(response._vars)}}
> {{=LOAD(c='course',f='form_year.load',target='form_year',ajax=True,content
> =P(T('loading...')))}}
> {{=LOAD(c='course',f='grid_course.load',target='grid_course',ajax=True,
> content='')}}
> {{=LOAD(c='course',f='grid_pricelist.load',target='grid_pricelist',ajax=
> True,content='')}}
> {{pass}}
> {{if request.is_local:}}
> {{=response.toolbar()}}
> {{pass}}
>
> ** views/course/form_year.load
> {{pass}}
> {{=form_year}}
>
> ** views/course/grid_course.load
> {{pass}}
> {{=grid_course}}
>
> ** views/course/grid_pricelist.load
> {{pass}}
> {{=grid_pricelist}}
>
> **** Controllers
> ** controllers/course.py
> # -*- coding: utf-8 -*-
>
> def index():
> return dict()
>
> #@auth.requires_login()
> def form_year():
> form_year = SQLFORM.factory(Field('years'),table_name='form_year')
> if form_year.process().accepted:
> session.years = form_year.vars.years
> ###################
> # RELOAD COMPONENTS grid_course AND grid_pricelist BUT HOW?
> ###################
> elif form_year.errors:
> response.flash = 'form_year has errors'
> return dict(form_year=form_year)
>
> #@auth.requires_login()
> def grid_course():
> grid_course = SQLFORM.grid(
> query_from(db.course.year, session,years()),
> formname='grid_course')
> return dict(grid_course=grid_course)
>
> #@auth.requires_login()
> def grid_pricelist():
> grid_pricelist = SQLFORM.grid(
> query_from(db.pricelist.year, session.years),
> formname='grid_pricelist')
> return dict(grid_pricelist=grid_pricelist)
>
> def query_from(field, integers)
> """
> builds a DAL query for "field in integers"
> """
> pass
>
>
>
--
---
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.