Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   List и data.name (http://www.flasher.ru/forum/showthread.php?t=141392)

Лир 24.06.2010 00:23

List и data.name
 
Доброго всем времени суток, недавно взялся за освоение Flex и столкнулся с проблемой. Пытаюсь создать свой компонент на основе List, в компоненте картинка и напротив неё Label - так выглядит одна строка списка. Вот код компонента:
Код AS3:

<mx:List  top="" xmlns:mx="http://www.adobe.com/2006/mxml" width="220" height="500" xmlns:local="*">
        <mx:itemRenderer>
                <mx:Component>
 
                        <mx:Grid >
                                <mx:GridRow paddingLeft="10" >
                                        <mx:GridItem paddingLeft="0" width="1%" paddingTop="8" >
                                                <local:ButtonForMenu />
                                        </mx:GridItem>
                                        <mx:GridItem width="99%">
                                                <mx:Label text="{data.name}" color="#000000"  />
                                        </mx:GridItem>
                                </mx:GridRow>
                        </mx:Grid>
 
                </mx:Component>
        </mx:itemRenderer>

При вызове компонента в приложении вот код:
Код AS3:

<local:MenuList dataProvider="{['Red','Orange','Yellow','Green','Blue','Indigo',
                                                                                'Violet']}">
 
        </local:MenuList>

по идее должны браться данные из dataProvider Label-ом, но не берет. Оказалось что если Label находится не в контейнере то данные берутся, а если в контейнере то данные он почему то не видит. Подскажите плз что не так и как с этим бороться?

Dimitry_II 24.06.2010 03:17

А на кой в листе грид? - Неужели не проще вставить Canvas или HBox? - Не будет двоякости в подчиненности коллекций (List -> Grid -> Label)

dataProvider - коллекция стрингов, почему обращение идет data.name? - Где у объектов провайдера такое свойство?

Лир 24.06.2010 18:56

При вызове компонента в dataProvider передается массив данных, вот
Код AS3:

<local:MenuList dataProvider="{['Red','Orange','Yellow','Green','Blue',
'Indigo','Violet']}"></local:MenuList>

А text="{data.name}" должен передать элементу списка значение из массива, по вашему совету расположил всё на Canvas, однако данные в список всё равно не передаются, из контейнера почему-то не видит это свойство. И какое свойство использовать тогда если не data.name, я прочитал что именно data.name необходим...

Dimitry_II 24.06.2010 23:32

Если бы было:
Код:

<mx:Array id="colors">
    <fx:Object name="Red"/>
    ....
    <fx:Object name="Violet"/>
</mx:Array>
<local:MenuList dataProvider="colors"/>

то можно было бы в рендерере обращаться к свойству name объекта массива (коллекции).
Но в твоем случае передается просто строковый массив.

Поэтому предлагаю (но не настаиваю на правильности):
1. Сделать примерно как я показал и обращаться к нужным свойствам.
или 2. Попробовать использовать просто data (а не data.name)

Лир 25.06.2010 01:11

Вариант 2 сработал)))) Просто data возвращает данные, супер!! Спасибо вам боольшущее))))!!


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

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