Hello and welcome to our community! Is this your first visit?
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 2 of 2
  1. #1
    New to the CF scene
    Join Date
    Sep 2008
    Thanked 0 Times in 0 Posts

    Nested Loops for Dynamic ComboBox -- Newbie easy fix??

    I have a dynamic xml driven form that I am trying to get the "label" and "value" using nested for loops for the combobox. I am using "droplabel" attribute. The xml schema is final, I cannot change this.

    I am having problem targeting the child node attributes.

    I keep running into error: "A term is undefined and has no properties." I am sure I am not properly formatting the for loop statement.

    I thank anyone for helping me in advance.


    <?xml version="1.0" encoding="utf-8?>

    <formdata userid="davis" fname="David" lname="washingon" auth="1">

    <element position="1" questionlabel="What is todays time ?">
    <item id="1" inputtype="TextInput">Monday</item>
    <item id="222" inputtype="TextInput">tonday</item>

    <element position="5" questionlabel="What is your time of arrival ?">
    <item id="5" inputtype="ComboBox">
    <drop droplabel="Select Answer---" dropvalue="0"></drop>
    <drop droplabel="What is this" dropvalue="1" selected="true"></drop>
    <drop droplabel="What is that" dropvalue="2"></drop>



    Flex Code:

    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundGradientColors="white" backgroundDisabledColor="white" backgroundColor="white" layout="absolute" horizontalAlign="center" creationComplete="handleCreationComplete()" verticalScrollPolicy="auto" cachePolicy="off">

    import mx.controls.Text;
    import mx.containers.FormItem;
    import mx.controls.Label;
    import mx.controls.Button;
    import mx.containers.ControlBar;
    import mx.controls.TextInput;
    import mx.controls.RadioButtonGroup;
    import mx.controls.List;
    import mx.controls.ComboBox;
    import mx.controls.CheckBox;
    import mx.controls.FormItemLabel;
    import mx.controls.RadioButton;
    import mx.controls.TextArea;
    import mx.controls.Alert;
    import mx.rpc.events.FaultEvent;
    import mx.rpc.events.ResultEvent;
    import mx.controls.ComboBox;
    import mx.collections.ArrayCollection;
    import mx.controls.DateField;
    import mx.core.IUIComponent;
    import mx.core.IUITextField;
    import mx.utils.ObjectUtil;
    import flash.utils.*;

    private function handleCreationComplete():void



    private function errorHandler(evt:FaultEvent):void
    Alert.show("Error: " + evt.fault.message);

    private function resultHandler(evt:ResultEvent):void

    buildForm(new XML(evt.result));

    private function buildForm(xml:XML):void
    var lst:XMLList = xml.children();
    var lsta:XMLList = xml.element.item.children();

    for(var i:int = 0; i < lst.length(); i++)
    var x:XMLList = lst[i].children();

    for(var j:int = 0; j < x.length(); j++)
    if(x[j].@inputtype == 'TextInput')
    var frmItem:FormItem = new FormItem();
    frmItem.direction = "vertical";

    var tb:TextInput = new TextInput();
    tb.text = x[j];
    tb.id = x[j].@id;
    tb.toolTip = 'Enter your Answer here';



    // Support other form field types

    if(x[j].@inputtype == 'ComboBox')

    // Having problem with this nested loop.

    for(var d:int = 0; d < lsta.length(); d++)

    var p:XMLList = lsta[d].children();

    for(var r:int = 0; r < p.length(); r++)

    var frmItemCombo:FormItem = new FormItem();

    var tg:ComboBox = new ComboBox();

    tg.alpha = .5;
    tg.text = p[r].@droplabel;
    tg.width = 230;
    tg.id = x[j].@id;
    frmItemCombo.required = true;
    tg.data = x[j].@label;




    <mx:HTTPService fault="errorHandler(event)" id="XMLService" resultFormat="e4x" url="test/formdata_final_a.xml" result="resultHandler(event)" method="POST" />

    <mx:Panel title="XML Driven Form -- Send Receive Data from SOA _JSP" height="90%" width="70%"
    paddingTop="50" paddingBottom="10" paddingLeft="50" paddingRight="10" layout="vertical" horizontalAlign="left" verticalAlign="top" backgroundColor="#EEEFFD" borderColor="#E2E2E2" x="72.5" y="10">
    <mx:Form id="userInfoForm" borderThickness="1" borderColor="#FCFAFA" borderStyle="solid" width="90%"/>


  2. #2
    Regular Coder
    Join Date
    Aug 2002
    New York
    Thanked 0 Times in 0 Posts
    not exactly sure of how to fix this, but i can point you in the right direction.

    the advantage of using XML in flex is the ease of formatting. there's no need to use for loops to iterate through every XML node -- this is a very inefficient way of working with XML and it is a waste of using e4x formatting. if you want to access a specific node in the XML structure, become familiar with the syntax for elements, attributes, and descendants (" . ", " .@ ", " .. ").


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts