![]() |
|
||||||||||
|
|||||
|
Прошу помощи сообщества с отображением контента во Flex 3
Вот такой интерфейс простенького таск менеджера с разбивкой на проэкты. Проэкты выделены в отдельные панельки. Код панелек с задачами: <mx:Repeater id="projectViews"> <mx:Panel id="projectViewName" width="100%"> <mx:Repeater id="taskViews"> <mx:HBox id="singleTaskView" width="100%" paddingTop="10"> <mx:CheckBox/> <mx:Label id="singleTaskName" /> <mx:Label id="singleTaskDesc" /> <mx:Button label="Edit" /> </mx:HBox> </mx:Repeater> <mx:HBox> <mx:Label text="Finished project?"/> <mx:CheckBox /> <mx:Button label="Edit project"/> </mx:HBox> </mx:Panel> </mx:Repeater>
__________________
Fighting 4 peace it's like fucking 4 virginary |
|
|||||
|
Либо я думаю не о том List, но мне кажется List control мне не подходит, мне нужно чтобы каждая задача в списке имела чекбокс, два лебла и кнопку. Я новичек во флекс, может не догоняю чего.
На счет сомнений — я и сам не уверен в такой вложенности, но если будут другие предложения…
__________________
Fighting 4 peace it's like fucking 4 virginary |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 109
|
Почему не генерить все при помощи AS?
А вообще все работает, только у репитера должен быть dataProvider (у обоих). <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"> <mx:Script> <![CDATA[ [Bindable] private var dp:Array = [1, 2, 3, 4, 5, 6, 7, 8, 9]; [Bindable] private var ds:Array = [1, 2, 3, 4, 5,]; ]]> </mx:Script> <mx:Panel width="100%" height="100%"> <mx:Repeater id="projectViews" dataProvider="{dp}"> <mx:Panel id="projectViewName" width="100%"> <mx:Repeater id="taskViews" dataProvider="{ds}"> <mx:HBox id="singleTaskView" width="100%" paddingTop="10"> <mx:CheckBox/> <mx:Label id="singleTaskName" /> <mx:Label id="singleTaskDesc" /> <mx:Button label="Edit" /> </mx:HBox> </mx:Repeater> <mx:HBox> <mx:Label text="Finished project?"/> <mx:CheckBox /> <mx:Button label="Edit project"/> </mx:HBox> </mx:Panel> </mx:Repeater> </mx:Panel> </mx:Application> http://examples.adobe.com/flex3/comp.../explorer.html если что смотри тут примеры, (visual components ->Repeater control -> repeater) |
|
|||||
|
Дата провайдеры я задаю во внешнем AS файле -
taskViews код видит, хоть он и внутри внешнего репитера, проверил. Этот код вызывается при получении xml. Я уже писал что если вынести вложенный репитер за пределы внешнего — все работает, то есть таски рисуются под проэктами, а внутри — нет. Айдишники внутри репитера для красоты больше ). Нужные данные я заполняю вызывая соответствующие методы из своего класса по creationComplete, только из примера выкинул дабы не захламлять.
__________________
Fighting 4 peace it's like fucking 4 virginary |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 109
|
Скорее всего проблема в том, что когда первый репитер получил данные, то у второго репитера уже нет того самого id=taskViews.
Это по поводу того, что я писал нет смысла использовать id внутри репитера. Для первого репитера можешь оставить, а для второго заведи массив и назнач его сразу, чтобы внутренний репитер знал откуда брать данные (ну или хмл, если у тебя из нее данные берутся) и уже при получении присваивай <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"> <mx:Script> <![CDATA[ private var dp:Array = [1, 2, 3, 4, 5, 6, 7, 8, 9]; [Bindable] private var ds:Array = new Array(); private function add():void { ds = [1, 2, 3, 4, 5]; projectViews.dataProvider = dp; } ]]> </mx:Script> <mx:Panel width="100%" height="100%"> <mx:Repeater id="projectViews"> <mx:Panel id="projectViewName" width="100%"> <mx:Repeater id="taskViews" dataProvider="{ds}"> <mx:HBox id="singleTaskView" width="100%" paddingTop="10"> <mx:CheckBox/> <mx:Label id="singleTaskName" /> <mx:Label id="singleTaskDesc" /> <mx:Button label="Edit" /> </mx:HBox> </mx:Repeater> <mx:HBox> <mx:Label text="Finished project?"/> <mx:CheckBox /> <mx:Button label="Edit project"/> </mx:HBox> </mx:Panel> </mx:Repeater> </mx:Panel> <mx:Button click="add()" label="sdfsdf"/> |
|
|||||
|
Хорошо, тогда впопрос, возможно немного нубский.
dataProvider для проектов я назначаю по событию во внешнем AS, событие — загрузка сгенерированного xml. Хотелось бы обьявить датапровайдер для задач в том же обработчике, как это сделать? Я попробовал обьявить в нем переменную — массив в который загрузил треды задач, но mxml код при этом его не видит. Внешний AS с обработчиком и прочим подключается по <mx:Script source="myASfile.as"/>
__________________
Fighting 4 peace it's like fucking 4 virginary |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 109
|
Обяви в своем классе паблик массив, и в приложении задай датапровайдер этот же массив.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 10:22. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| repeater |
|
|