[Seaside] Forms - Select List: action before submit button

Cédrick Béler cbeler at enit.fr
Tue Jun 12 08:42:30 UTC 2007


dirk newbold a écrit :
> All,
>  
> http://ajax.asp.net/ajaxtoolkit/CascadingDropDown/CascadingDropDown.aspx
>  
> I found the exact example I am trying to achieve as per this ajax link 
> above.
>  
> I'm guessing Seaside has same deal but can't see to make anything work 
> - I'm new at all this.
>  
> Thanks,
>  
> Dirk
I think you have to use the updater and onChange() event to realize 
that... in 3 different select...
have a look at SUClassBrowser renderCategoriesOn: html...   or see 
implementors of #updater
Also, there was a similar stuuf with SeasideAsync but if you use only 
scriptaculous, this should be somethink like (not tested):

renderContentOn: html
html div
    id: 'box1';
    with: [self renderBox1On: html].
html div
    id: 'box2';
    with: [self renderBox2On: html].
html div
    id: 'box1';
    with: [self renderBox3On: html].


renderBox1On: html
    html select
        id: 'box1';
        selected: self val1;
        list: self list1;
        callback: [:valBox1 | self val1 := valBox1]
        onChange: (hmtl updater
                            id: 'box2';    "on change,   update the box 
named box2"
                            triggerFormElement: 'box1'   "also triger 
the action associated to that form element.... self val1 := valBox1   
ort whaterver..."
                            callback: [:render | self renderBox2On: 
render].   " the box is redrawn with the rendering fonction renderBox3"
                            onSuccess: (html updater   "don't forget to 
upadate the last box..."
                                    id: 'box3';
                                   callback: [:render | self 
renderBox3On: render])  

renderBox2On: html
    html select
        id: 'box2';
        selected: self val2;
        list: self list2;
        callback: [:valBox2 | self val2 := valBox2]
        onChange: (hmtl updater
                            id: 'box2';
                            triggerFormElement: 'box2';
                            callback: [:render | self renderBox3On: render]

renderBox3On: html
    html select
        id: 'box3';
        selected: self val3;
        list: self list3;
        callback: [:valBox3 | self val3 := valBox3]
        onChange: (hmtl request
                            triggerFormElement: 'box2']  "only trigger 
the callback associated to id box3... no rendering needed..."


hth

Cédrick


More information about the Seaside mailing list