Now I see the problem:

do this

class MYSELECT(SELECT):
    def _fixup(self): pass

and use MYSELECT

On Apr 20, 10:41 pm, Iceberg <iceb...@21cn.com> wrote:
> Massimo's answer makes sense but does not entirely solve the problem.
>
> Using SELECT(...) instead of TAG.SELECT(...) in my previous sample
> code, does not render proper html output. There are two unnecessary
> blank option with wrong value.
>
> I guess SELECT(...) need to be fixed to support TAG.OPTGROUP(...),
> perhaps a native OPTGROUP(...).
>
> Regards,
> Iceberg
>
> On Apr18, 3:04am, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > you must use SELECT and not TAG.SELECT. The former is derived from
> > INPUT an knows how to process options, tha latter is simply derived
> > from a DIV and does not.
>
> > On Apr 17, 1:08 pm, Iceberg <iceb...@21cn.com> wrote:
>
> > > Hi Denes and/or Massimo,
>
> > > I just pick up this old post 
> > > fromhttp://groups.google.com/group/web2py/browse_frm/thread/971433920541935a
>
> > > I used the code suggested by Denes, e.g. using TAG.SELECT and
> > > TAG.OPTGROUP.
>
> > > The code shows proper drop-down box but, after form.accepts(...) the
> > > form.vars.my_field seems always None.
>
> > > def test_code():
> > >     OG=TAG.OPTGROUP
> > >     g1=[ OPTION( r, _value=r ) for r in [23, 24, 25] ]
> > >     g2=[ OPTION( r, _value=r ) for r in [32, 33, 34] ]
> > >     ogs=[OG(_label='30 and under',*g1),OG(_label='over 30',*g2)]
> > >     sel = TAG.SELECT(_name='person', *ogs) # DO NOT USE
> > > sel=SELECT(...)
> > >     form=FORM( sel, INPUT(_type='submit') )
> > >     if form.accepts(request.vars,keepvalues=True):
> > >       response.flash = 'got %s' % form.vars.person # Why always got
> > > none?
> > >     return dict(form=form)
>
> > > Question: What need I change to make form.vars.my_field work when
> > > using TAG.SELECT()?
>
> > > By the way, in case some people might ask why bother, why not just use
> > > request.vars.my_field instead, well, it is just my personal best-
> > > practice because form.vars.my_field usually contains data qualified by
> > > validators, therefore more precisely than request.vars.my_field. Think
> > > about this:
> > >   define_table('my_table',Field('my_field', requires=IS_UPPER()))
> > >   form = SQLFORM(db.mytable)
> > > and input "hello world", then
> > >   request.vars.my_field=="hello world"
> > > but
> > >   form.vars.my_field=="HELLO WORLD"
> > > usually form.vars.my_field contains what I really need.
>
> > > Regards,
> > > Iceberg
>
> > > On Feb18, 12:48am, DenesL <denes1...@yahoo.ca> wrote:
>
> > > > So for future reference:
>
> > > > you can create OPTGROUPs with TAG.OPTGROUP
> > > > but do NOT use it with the SELECT helper,
> > > > you must use TAG.SELECT as in the following example:
>
> > > > def index():
> > > >      OG=TAG.OPTGROUP
> > > >      g1=[ OPTION( r.name, _value=r.id ) for r in
> > > > db(db.person.age<=30).select() ]
> > > >      g2=[ OPTION( r.name, _value=r.id ) for r in
> > > > db(db.person.age>30).select() ]
> > > >      ogs=[OG(_label='30 and under',*g1),OG(_label='over 30',*g2)]
> > > >      sel = TAG.SELECT(_name='person', *ogs)
> > > >      # DO NOT USE sel=SELECT(_name='person',*ogs )
> > > >      f=FORM( sel )
> > > >      return dict(f=f)
>
> > > > Denes.

Reply via email to