It's not in stable yet, but in trunk, you can now specify ul or divs style 
rather than table style for the radio widget. I think it would be:

db.payment_bpay_step1.selection_type.widget = lambda f, v: 
SQLFORM.widgets.radio.widget(f, v, style='divs')

You can also create a custom widget, as described at the end of this 
section: http://web2py.com/book/default/chapter/07#Widgets.

When you say you want the "innerhtml" to be different from the value of the 
radio button, are you talking about the label next to the radio button? For 
that, the IS_IN_SET validator takes a 'labels' argument, which is a list of 
labels associated with the options in the set.

Anthony


On Saturday, September 17, 2011 1:15:18 PM UTC-4, Brent Jacobs wrote:
>
> I'm trying to display a field as a radio button group in a customised 
> form.  I want to place each radio button on a different row in a 
> table.  The problem is when I use `{{=form.custom.selection_type[0]}} 
> `, the widget is wrapped in unwanted `tr` and `td` tags. 
>
> Is there a way to add only the radio input field without the 
> additional tags? Also, is it possible to have the innerhtml different 
> from the value of the radio button? 
>
> Thanks. 
>
> My view: 
>
>     {{extend 'layout.html'}} 
>     {{=form.custom.begin}} 
>     <table> 
>       <tr> 
>         <td> {{=form.custom.selection_type[0]}}:</td> 
>         <td> {{=form.custom.widget.biller_list}}</td> 
>       </tr> 
>       <tr> 
>         <td> {{=form.custom.widget.selection_type[1]}}:</td> 
>         <td> {{=form.custom.widget.biller_code}}</td> 
>       </tr> 
>     </table> 
>     {{=form.custom.end}} 
>
> Example of what's happening in the html source code: 
>
>     <table> 
>       <tr> 
>         <td> <tr><td><input name="selection_type" type="radio" 
> value="From my biller list" />From my biller list</td></tr>:</td> 
>         ... 
>       </tr> 
>     ... 
>     </table> 
>
> My model: 
>
>     db.define_table('payment_bpay_step1', 
>         Field('selection_type', 'list:string'), 
>         Field('biller_list', db.biller, notnull=True), 
>         Field('biller_code'), 
>         Field('biller_name')) 
>     db.payment_bpay_step1.selection_type.requires = IS_IN_SET(('From 
> my biller list', 'Search by biller code', 'Search by biller name')) 
>     db.payment_bpay_step1.selection_type.widget = 
> SQLFORM.widgets.radio.widget 
>

Reply via email to