Steve M <[EMAIL PROTECTED]> writes:
> I'm having trouble setting an option in a multiselect field to be the
> default selected option.
Hi Steve,
I am new to Webware, FormKit etc. but I think I can help you out on this
one:
choices = BaseChoiceClasses.ChoiceList()
for f in 'apple banana blueberry kiwi orange strawberry'.split():
choices.addChoice(f, f)
choices.setSelected(['kiwi', strawberry'])
See also attached servlet (fruits.py) with full example of a multi-select
field.
HTH,
Martin
from WebKit.Page import Page
from FormKit import Form, BaseChoiceClasses, Fields
from FormKit.FormKitMixIn import FormKitMixIn
import time
class fruits(FormKitMixIn, Page):
def __init__(self):
Page.__init__(self)
form = self.form = Form.Form()
self.addForm(form)
## MULTI-SELECT
fruits = Fields.MultiSelectField('fruits', label="Select
fruits")
form.addField(fruits)
self.fruitChoices = BaseChoiceClasses.ChoiceList()
fruits.setChoices(self.fruitChoices)
self.fruitsSelectedInit()
form.addField(Fields.WebKitSubmitButton(name="submit",label="Update"))
def awake(self, transaction):
Page.awake(self, transaction)
self.fruitsUpdate()
def sleep(self, transaction):
self.resetForms()
Page.sleep(self, transaction)
## Actions
def actions(self):
return ['submit']
def submit(self):
if not self.form.isSuccessful(): return
## Other methods
def fruitsSelected(self):
return self.__fruitsSelected
def fruitsSelectedInit(self):
self.__fruitsSelected = ['kiwi']
def fruitsSelectedUpdate(self):
self.__fruitsSelected = self.form.value('fruits')
def fruitsUpdate(self):
fruits = 'apple banana blueberry kiwi orange strawberry'.split()
self.fruitChoices.clear()
for f in fruits:
self.fruitChoices.addChoice(f, f)
self.fruitChoices.setSelected(self.fruitsSelected())
def writeContent(self):
self.writeln('''<h3>Time: %s</h3>''' % str(time.time()))
self.write(self.form.dump())