[CLOSED] segmented buttons dont properly pass values with Form.getFieldValues

  1. #1

    [CLOSED] segmented buttons dont properly pass values with Form.getFieldValues

    Hi
    I am submitting a form with a segmented button. All my other form elements come through successfully. However,
    my segmented button is null.


    My XXXForm properties match to my ext form ids (including segmented button) but it always comes as null.


    pls assist.


    thanks
    /Z




    <ext-window
        id="createNewXXX"
        title="Create XXX"
        width="410"
        bodyPadding="10"
        modal="true">
        <items>
         <ext-formPanel
            id="createNewXXXFormPanel"
            width="390"
            x-defaultAnchor="100%">
            <fieldDefaults>
                <ext-add key="labelWidth" value="100" mode="Raw" />
            </fieldDefaults>
            <defaults>
                <ext-add key="margin" value="0 0 10 0" />
            </defaults>
            <items>
                <ext-fieldContainer fieldLabel="<b>XXX Details</b>" labelAlign="Top" >
                    <items>
                        <ext-segmentedButton id="segmentedXXXId">
                            <items>
                                <ext-button
                                    text="111"
                                    scale="Medium"
                                    variant=Light
                                    width="130"
                                    iconAlign="Top"
                                    />
                                <ext-button
                                    text="222"
                                    width="130"
                                    variant=Light
                                    scale="Medium"
                                    iconAlign="Top"
                                    />
                                <ext-button
                                    text="333"
                                    width="130"
                                    scale="Medium"
                                    variant=Light
                                    iconAlign="Top"
                                    />
                            </items>
                        </ext-segmentedButton>
                    </items>
                </ext-fieldContainer>
            </items>
            <buttons>
    
    
                <ext-button text="Save" iconCls="x-md md-icon-save" variant="Success">
                    <DirectEvents>
                        <Click 
                            url="/XXX/SaveXXX"
                            timeout="60000"
                            cleanrequest="true"
                            before="if (!App.createNewXXXFormPanel.getForm().isValid()) {
                                            return false;
                                        }
                                        this.waitWnd = Ext.Msg.wait('Saving your XXX...', 'Saving...');"                        
                            success="alert('success')"
                            method="POST" 
                            failure="
                                       Ext.Msg.show({
                                            title: 'Error',
                                            msg: 'Error during save',
                                            minWidth: 200,
                                            modal: true,
                                            anchor: 'createNewXXXFormPanel',
                                            icon: Ext.Msg.ERROR,
                                            buttons: Ext.Msg.OK
                                        });"
                            >
                            <eventmask mindelay="250" />
                            <extraParams>
                                <ext-add key="FormValues" value="App.createNewXXXFormPanel.getForm().getFieldValues()" mode="Raw" />
                            </extraParams>
                        </Click>
                    </DirectEvents>
                </ext-button>
    
    
            </buttons>
        </ext-formPanel>
        </items>
    </ext-window>

    and my controller that accepts the SaveXXX function

    	        public IActionResult SaveXXX(string FormValues)
            {
                XXXForm XXXForm = Newtonsoft.Json.JsonConvert.DeserializeObject<XXXForm>(FormValues);
    
    
                return null;
            }
  2. #2
    Hello, @Z!

    A segmented button is not a form field. I mean, adding one to your page, form or FormPanel won't include an inherent form input field. You can work with the current state of the button if you submit it like it is done with this button in the ArrayGrid > DirectEvent Creation example.

    If you want to submit the currently pressed button, avoiding unnecessary overhead, you could create a (hidden?) field and change its value by a click/toggle listener in the buttons; it can be as simple as just filling it with the segmented button's .getValue() result. Notice that if you set allowMultiple in the segmented button, its .getValue() client-side function will return an array of values (zero-based index of the buttons depressed).

    Hope this helps!
    Fabrício Murta
    Developer & Support Expert

Similar Threads

  1. [CLOSED] Form's GetFieldValues vs FieldReplicator
    By RCN in forum 3.x Legacy Premium Help
    Replies: 3
    Last Post: Apr 07, 2015, 11:41 AM
  2. Replies: 0
    Last Post: Dec 04, 2011, 2:28 PM
  3. Replies: 2
    Last Post: Aug 29, 2011, 3:53 PM
  4. Pass values between windows
    By ven in forum 1.x Help
    Replies: 8
    Last Post: Oct 07, 2009, 6:11 AM
  5. how to pass values between tabs
    By joydeepsen in forum 1.x Help
    Replies: 0
    Last Post: Jun 09, 2009, 1:44 AM

Posting Permissions