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())

Reply via email to