Thanks for your reponse David!

On Thursday, February 8, 2018 at 8:56:19 PM UTC+1, Dave S wrote:
>
>
>
> On Thursday, February 8, 2018 at 9:55:25 AM UTC-8, Matthew J Watts wrote:
>>
>> Hi community
>>
>> I'm having a few problems trying to understand how create a cascading 
>> drop down list. I've followed this recipe -
>>
>>
>> http://www.web2pyslices.com/slice/show/1526/cascading-drop-down-lists-with-ajax-2
>>
>> i've managed to adapt it slightly, but i'm having trouble trying to add 
>> more tables to the cascade/sequence 
>>
>
> I'm not much of a menu person (I make use of ordinary anchor links for the 
> most part), but that example was probably written when BootStrap2 was the 
> css/javascript in use.  Currently,  web2py ships with BootStrap3, which 
> doesn't support more than 1 level of submenus.  If you use stupid.css (as 
> in applications/example), you might not have that limitation, but I can't 
> show you what you want.
>
>
>> It is quite difficult for me (a beginner) to suss out the logic behind it
>>
>>
> Menus typically control what is shown by using javascript to manipulate 
> CSS.  Simple menus may be CSS only, but then they'd be statically defined.  
>
> Good luck!
>
> /dps
>
>  
>
>> So at the moment i have the code below, what i'm trying to do is return a 
>> list of values from  the "tax_class" table, based  on a selection from 
>> the "tax_phylum" table( based on sececting an entry  from the kingdom 
>> table)
>>
>> *model*
>>
>> db.define_table('tax_kingdom',
>>                 Field('name'))
>>
>> db.define_table('tax_phylum',
>>                 Field('name', 'string'),
>>                 Field('kingdom_id'))
>> db.tax_phylum.kingdom_id.requires = IS_IN_DB(db, db.tax_kingdom.id, 
>> '%(name)s')
>>
>> db.define_table('tax_class',
>>                 Field('name', 'string'),
>>                 Field('phylum_id'))
>> db.tax_class.phylum_id.requires = IS_IN_DB(db, db.tax_phylum.id, '%(name)s')
>>
>>
>> *Controller*
>>
>> def index():
>>     kingdoms = db().select(db.tax_kingdom.ALL)
>>
>>     if request.vars.kingdom_name:
>>         phylum_select = db(db.tax_phylum.id == 
>> request.vars.kingdom_name).select(db.tax_phylum.ALL)
>>     else:
>>         phylum_select = db(db.tax_phylum.id == 1).select(db.tax_phylum.ALL)
>>     return dict(kingdoms=kingdoms, phylum_select=phylum_select)
>>
>>
>> def phylum():
>>     phylums = db(db.tax_phylum.kingdom_id == 
>> request.vars.kingdom_name).select(db.tax_phylum.ALL)
>>     result = ""
>>     for p in phylums:
>>         result += "<option value='" + str(p.id) + "'>" + p.name + "</option>"
>>     return XML(result)
>>
>>
>>
>> *view*
>>
>>
>>
>> {{extend 'layout.html'}}
>>
>> <form enctype="multipart/form-data" action="{{URL()}}" method="post">
>>     <select name='kingdom_name'
>>         onchange="jQuery('#kingdom_name').empty();
>>         ajax('phylum', ['kingdom_name'], 'phylum_name');">
>>         {{for kingdom in kingdoms:}}
>>             <option value="{{=kingdom.id}}"
>>                 {{=" selected='selected'" if 
>> str(kingdom.id)==request.vars.kingdom_name else ""}}>
>>             {{=kingdom.name}}
>>             </option>
>>         {{pass}}
>>     </select>
>>
>>
>> <select id='phylum_name' name='phylum_name' >
>>     <!-- loop through the index function i -->
>>         {{for phylum in phylum_select:}}
>>             <option value="{{=phylum.id}}"
>>                 {{=XML(" selected='selected'") if 
>> str(phylum.id)==request.vars.phylum_name else ""}}>
>>             {{=phylum.name}}</option>
>>         {{pass}}
>>     </select>
>>
>>
>> </form>
>>
>>

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

Reply via email to