OK, this works
js = ''
for x in ["grid_course","grid_pricelist"]:
js += "$('#"+x+"').load('/"+"/".join([request.application, request.
controller])+"/"+x+".load');"
response.js = js
or the equivalent, but more cryptic
";".join("$('#"+x+"').load('/"+"/".join([request.application, request.
controller])+"/"+x+".load')" for x in ["grid_course","grid_pricelist"])
All they do is setting response.js to this string
$('#grid_course').load('/app/course/grid_course.load');$('#grid_pricelist').
load('/app/course/grid_pricelist.load');
Thanks.
On Sunday, June 16, 2013 9:27:17 PM UTC+2, step wrote:
>
> It couldn't be any easier! Luv that web2py.
> Honestly, I had gotten very close to the right answer. My code was using
> response.js='location.reload();' as a temp workaround for my inability to
> reload just the components. But I didn't make the connection that I should
> drill down into the DOM from document to div level.
> However, upon trying your line, with and without a semicolon, I keep
> getting Javascript error: jQuery('#grid_course,#grid_pricelist').reload
> is not a function.
>
>
>
> On Sunday, June 16, 2013 9:03:35 PM UTC+2, Massimo Di Pierro wrote:
>>
>> 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.