[Seaside] Help with dependent components.

Fritz Schenk intrader.intrader at gmail.com
Sat May 8 21:35:35 UTC 2010


I have implemented the following use case using Javascript and ASP.net:

1. One listbox A
2. A textbox - displays a computation dependant on listbox A's selection
3. A listbox B - provides selections dependent on the selection of 
listbox A. The contents of listbox B are provided via AJAX.
4. The action seems immediate at the browsers.

The solution entails setting up a publish/subscribe pattern - the 
textbox and listbox B suscribe from a publisher that watches for changes 
on listbox A.

I have looked at Announcements, and envision a possible solution using 
Announcements.

However, a server trip seems to be inevitable with the callbacks (apart 
from the listbox B AJAX contents); also, if more than one callback is 
involved, they are sequentially executed at the server. The requirement 
suggests that this should operate at the client without server trip.

For example:
<code>
        "Radio Buttons"
        html text: 'Gender: '.
        group := html radioGroup.
        group radioButton
            selected: self contact isMale;
            callback: [ self contact beMale].
        html text: 'Male'.
        group radioButton
            selected: self contact isFemale;
            callback: [ self contact beFemale].
        html text: 'Female'.
        html break.
         "Drop-Down Menu"
         html text: 'Gender: '.
         html select
           size: 2;
            list: #(#Male #Female);
            selected: self contact gender;
            callback: [ :value |
                self contact inspect.
                value = #Male
                   ifTrue: [ self contact beMale ]
                   ifFalse: [self contact beFemale ]].
</code>
is an incorrect version of two views of gender which should ideally be 
synchronized. However the callbacks execute sequentially, while the 
closure in the dropdown obtains previous values, an do not see the new 
value set by the callback of the radioButton.

I would like suggestions on how to approach this common use case. There 
are many such cases while implementing a complex 1003 form.

Thanks



More information about the seaside mailing list