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.