Динамическое дублирование форм Flex - PullRequest
0 голосов
/ 03 февраля 2011

Я разрабатываю приложение для ввода данных, которое допускает несколько записей в своей теме.Например, человек мог получить образование в нескольких учреждениях.Каждая образовательная запись является формой, и пользователь приложения может нажать на кнопку, чтобы добавить другую запись, которая является пустой, но идентичной формой.

Я полагаю, что это включает в себя состояния и пользовательские компоненты формы, но не уверен, как все сходится.Может кто-нибудь пролить свет на то, как этого добиться?Некоторые примеры кодов будут с благодарностью.

Заранее спасибо,

1 Ответ

0 голосов
/ 03 февраля 2011

Требуется гибкий вариант, если есть требование? или просто использовать новейший код Flex 4? Вообще говоря, это очень простая задача во Flex: вы создаете определение класса в MXML для AnEntry.mxml, которое представляет собой просто TextInput (или метку и TextInput или все, что вам нужно для каждой записи). В обработчике нажатия кнопки a вы во Flex 3 вызываете this.addChild (new AnEntry ()) или в Flex 4 вызываете this.addElement (new AnEntry ()) ;. Для отправки вы должны выполнить цикл, начинающийся с 0 и переходящий к this.numChildren, и для каждого прохода TextInput в качестве параметров HTTPService в качестве параметров.

Два файла ниже скомпилированы для Flex 3.4

[AnEntry.mxml]

<?xml version="1.0" encoding="utf-8"?>
<mx:Box xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Label text="Link:"/>
    <mx:TextInput id="theTextInput"/>
</mx:Box>

[MainApplication.mxml]

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                layout="vertical"
                minWidth="955"
                minHeight="600">

    <mx:Script>
        <![CDATA[
            import mx.rpc.http.HTTPService;
            protected function button1_clickHandler(event:MouseEvent):void
            {
                var params:Object = {};
                var paramCount:Number=0;
                // TODO Auto-generated method stub
                for(var i:Number = 0; i<numChildren; i++)
                {
                    var currentChild:DisplayObject = getChildAt(i);
                    if(currentChild is  AnEntry)
                    {
                        params[paramCount++] = (currentChild as AnEntry).theTextInput.text;
                    }
                }
                var httpService:HTTPService = new HTTPService();
                httpService.method = "POST"
                httpService.url = "http://www.shaunhusain.com/somewhere.php";
                httpService.send(params);
            }
        ]]>
    </mx:Script>


    <mx:Button label="Add Entry" click="this.addChild(new AnEntry())"/>
    <mx:Button label="Submit Info" click="button1_clickHandler(event)"/>
</mx:Application>

Пожалуйста, дайте мне знать, если это заставит вас двигаться в правильном направлении, если вы новичок в Flex, ищите видео Flex за неделю, они являются отличным учебным пособием для начала разработки Flex.

Поправка к Flex 4:

[MainApplication.mxml]

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <s:layout>
        <s:VerticalLayout/>
    </s:layout>
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
        import mx.rpc.http.HTTPService;
        protected function button1_clickHandler(event:MouseEvent):void
        {
        var params:Object = {};
        var paramCount:Number=0;
        // TODO Auto-generated method stub
        for(var i:Number = 0; i<numChildren; i++)
        {
        var currentChild:DisplayObject = getChildAt(i);
        if(currentChild is  AnEntry)
        {
        params[paramCount++] = (currentChild as AnEntry).theTextInput.text;
        }
        }
        var httpService:HTTPService = new HTTPService();
        httpService.method = "POST"
        httpService.url = "http://www.shaunhusain.com/somewhere.php";
        httpService.send(params);
        }
        ]]>
    </fx:Script>


    <mx:Button label="Add Entry" click="this.addElement(new AnEntry())"/>
    <mx:Button label="Submit Info" click="button1_clickHandler(event)"/>

</s:Application>

[AnEntry.mxml]

<?xml version="1.0" encoding="utf-8"?>
<mx:Box xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        xmlns:mx="library://ns.adobe.com/flex/mx">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <mx:Label text="Link:"/>
    <mx:TextInput id="theTextInput"/>
</mx:Box>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...