Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Boolean в dataProvider (http://www.flasher.ru/forum/showthread.php?t=126974)

bleed 01.07.2009 21:12

Переменная Boolean в dataProvider из XML
 
Код AS3:

<?xml version="1.0"?>
<!-- itemRenderers\inline\CBInlineCellEditor.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
        <mx:Script>
                <![CDATA[
                        import mx.collections.ArrayCollection;
                        [Bindable]
                        private var myDP:ArrayCollection = new ArrayCollection([
                        {label1:"Order #2314", contact:"John Doe", quant:3, solddate:new Date(2005, 0, 1), Sent:true},
                        {label1:"Order #2315", contact:"Jane Doe", quant:3, solddate:new Date(2005, 0, 5), Sent:false}
                        ]);
                ]]>
        </mx:Script>
        <mx:DataGrid id="myDG" dataProvider="{myDP}" variableRowHeight="true" width="500" height="250" editable="true">
                <mx:columns>
                        <mx:DataGridColumn dataField="label1" headerText="Order #" editable="false"/> <mx:DataGridColumn dataField="quant" headerText="Quantity" itemEditor="mx.controls.NumericStepper" editorDataField="value"/>
                        <mx:DataGridColumn dataField="solddate" headerText="Date" itemRenderer="mx.controls.DateField" rendererIsEditor="true" editorDataField="selectedDate"/>
                        <mx:DataGridColumn dataField="Sent" itemRenderer="mx.controls.CheckBox" rendererIsEditor="true" editorDataField="selected"/>
                </mx:columns >
        </mx:DataGrid>
</mx:Application>

так CheckBox'ы отмечаются:
{label1:"Order #2314", contact:"John Doe", quant:3, solddate:new Date(2005, 0, 1), Sent:true},
{label1:"Order #2315", contact:"Jane Doe", quant:3, solddate:new Date(2005, 0, 5), Sent:false}

а так нет:
{label1:"Order #2314", contact:"John Doe", quant:3, solddate:new Date(2005, 0, 1), Sent:"true"},
{label1:"Order #2315", contact:"Jane Doe", quant:3, solddate:new Date(2005, 0, 5), Sent:"false"}

проблема не в этом примере но схожа 1 в 1, просто заполняю datagrid через dataProvider не из массива, а из XML подгружаемого из вне, где все данные идут в String а как там указать тип boolean?

Код AS3:

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="500" height="600" xmlns:myComp="com.Managers.*"  creationComplete="loadManagersList();">
<mx:Script>
        <![CDATA[
                import mx.collections.XMLListCollection;
                import mx.collections.ArrayCollection;
                import mx.events.CollectionEvent;
                import mx.rpc.events.FaultEvent;
                import mx.rpc.events.ResultEvent;
                import mx.controls.Alert;
                import mx.controls.CheckBox;
 
                [Bindable]
                private var managersCollection:XMLListCollection = new XMLListCollection();
 
                public function requestResultManagersListHandler(event:ResultEvent):void
                {
                        managersCollection.source= event.result.manager as XMLList;
                }
 
                public function requestFaultHandler(event:FaultEvent):void
                {
                        Alert.show("err"+event.message.toString());
                }
 
                public function loadManagersList():void
                {
                        userRequest.cancel();
                        userRequest.addEventListener(ResultEvent.RESULT,requestResultManagersListHandler);
                        userRequest.resultFormat = "e4x";
                        userRequest.showBusyCursor = true;
                        userRequest.url = "managers.xml?"+Math.random();
                        userRequest.method = "GET";
                        userRequest.send();
                }
 
        ]]>
</mx:Script>
<mx:HTTPService id="userRequest" fault="requestFaultHandler(event);"/>
        <mx:VBox left="0" right="0" top="0" bottom="0">
                <mx:VBox height="100%" width="100%">
                        <mx:AdvancedDataGrid id="adgManagers" width="100%" height="249" dataProvider="{managersCollection}"  editable="true">
                                <mx:columns>
                                        <mx:AdvancedDataGridColumn dataField="check" itemRenderer="mx.controls.CheckBox" rendererIsEditor="true" editorDataField="selected" />
                                        <mx:AdvancedDataGridColumn headerText="Column 1" dataField="name" />
                                        <mx:AdvancedDataGridColumn headerText="Column 2" dataField="family"/>
                                        <mx:AdvancedDataGridColumn headerText="Column 3" dataField="telephone"/>
                                </mx:columns>
                        </mx:AdvancedDataGrid>
        </mx:VBox>
</mx:Canvas>

Сам XML
Код:

<?xml version="1.0" encoding="windows-1251" ?>
<managers>
<manager><name>name</name><family>family</family><telephone>1111</telephone><check>1</check></manager>
<manager><name>name</name><family>famildfgy</family><telephone>11fgg11</telephone><check>true</check></manager>
<manager><name>namefgdfg</name><family>fdfgamily</family><telephone>dfgdfg1111</telephone><check>TRUE</check></manager>
</managers>

как сделать чтобы чек боксы отмечались как в самом верхнем примере где данные грузятся из локального массива???
Заранее спасибо!

wvxvw 01.07.2009 21:32

Генерируйте типизированые велью-обжекты из ХМЛя, или паристе в рендерере (хуже).
ХМЛ это, по-сути, строка, никакой тип вы там не укажите.

bleed 01.07.2009 21:37

спасибо, но не понял вот это
Цитата:

Сообщение от wvxvw (Сообщение 832474)
Генерируйте типизированые велью-обжекты из ХМЛя

это как?


Часовой пояс GMT +4, время: 10:31.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.