Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.09.2009, 20:30
Elisium вне форума Посмотреть профиль Отправить личное сообщение для Elisium Найти все сообщения от Elisium
  № 1  
Ответить с цитированием
Elisium
 
Аватар для Elisium

Регистрация: Nov 2006
Адрес: Киев
Сообщений: 5
Отправить сообщение для Elisium с помощью ICQ
Post Repeater вложенный в repeater

Прошу помощи сообщества с отображением контента во 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>
Проблема в том что вложенный repeater не отображается. Если его вынести за внешний репитер - задачи видны. Как с этим бороться? Или как можно сделать дабы избежать вложенности репитеров?
__________________
Fighting 4 peace it's like fucking 4 virginary

Старый 16.09.2009, 22:47
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 2  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
У меня есть вопрос и сомнение
Вопрос - почему вы не используете *List?
Сомневаюсь, что такая вложенность это хорошо.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 17.09.2009, 16:25
Elisium вне форума Посмотреть профиль Отправить личное сообщение для Elisium Найти все сообщения от Elisium
  № 3  
Ответить с цитированием
Elisium
 
Аватар для Elisium

Регистрация: Nov 2006
Адрес: Киев
Сообщений: 5
Отправить сообщение для Elisium с помощью ICQ
Либо я думаю не о том List, но мне кажется List control мне не подходит, мне нужно чтобы каждая задача в списке имела чекбокс, два лебла и кнопку. Я новичек во флекс, может не догоняю чего.

На счет сомнений — я и сам не уверен в такой вложенности, но если будут другие предложения…
__________________
Fighting 4 peace it's like fucking 4 virginary

Старый 17.09.2009, 17:54
yorlin вне форума Посмотреть профиль Отправить личное сообщение для yorlin Найти все сообщения от yorlin
  № 4  
Ответить с цитированием
yorlin
 
Аватар для yorlin

Регистрация: Nov 2008
Сообщений: 109
Почему не генерить все при помощи AS?

А вообще все работает, только у репитера должен быть dataProvider (у обоих).

Код AS3:
<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)

Старый 17.09.2009, 18:31
Elisium вне форума Посмотреть профиль Отправить личное сообщение для Elisium Найти все сообщения от Elisium
  № 5  
Ответить с цитированием
Elisium
 
Аватар для Elisium

Регистрация: Nov 2006
Адрес: Киев
Сообщений: 5
Отправить сообщение для Elisium с помощью ICQ
Дата провайдеры я задаю во внешнем AS файле -

Код:
projectViews.dataProvider = e.tasksContent;
taskViews.dataProvider = e.tasksContent.task;
taskViews код видит, хоть он и внутри внешнего репитера, проверил.

Этот код вызывается при получении xml.
Я уже писал что если вынести вложенный репитер за пределы внешнего — все работает, то есть таски рисуются под проэктами, а внутри — нет.
Айдишники внутри репитера для красоты больше ). Нужные данные я заполняю вызывая соответствующие методы из своего класса по creationComplete, только из примера выкинул дабы не захламлять.
__________________
Fighting 4 peace it's like fucking 4 virginary

Старый 17.09.2009, 19:21
yorlin вне форума Посмотреть профиль Отправить личное сообщение для yorlin Найти все сообщения от yorlin
  № 6  
Ответить с цитированием
yorlin
 
Аватар для yorlin

Регистрация: Nov 2008
Сообщений: 109
Скорее всего проблема в том, что когда первый репитер получил данные, то у второго репитера уже нет того самого id=taskViews.
Это по поводу того, что я писал нет смысла использовать id внутри репитера.

Для первого репитера можешь оставить, а для второго заведи массив и назнач его сразу, чтобы внутренний репитер знал откуда брать данные (ну или хмл, если у тебя из нее данные берутся) и уже при получении присваивай

Код AS3:
<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"/>

Старый 17.09.2009, 19:36
Elisium вне форума Посмотреть профиль Отправить личное сообщение для Elisium Найти все сообщения от Elisium
  № 7  
Ответить с цитированием
Elisium
 
Аватар для Elisium

Регистрация: Nov 2006
Адрес: Киев
Сообщений: 5
Отправить сообщение для Elisium с помощью ICQ
Хорошо, тогда впопрос, возможно немного нубский.
dataProvider для проектов я назначаю по событию во внешнем AS, событие — загрузка сгенерированного xml. Хотелось бы обьявить датапровайдер для задач в том же обработчике, как это сделать?
Я попробовал обьявить в нем переменную — массив в который загрузил треды задач, но mxml код при этом его не видит. Внешний AS с обработчиком и прочим подключается по <mx:Script source="myASfile.as"/>
__________________
Fighting 4 peace it's like fucking 4 virginary

Старый 17.09.2009, 19:55
yorlin вне форума Посмотреть профиль Отправить личное сообщение для yorlin Найти все сообщения от yorlin
  № 8  
Ответить с цитированием
yorlin
 
Аватар для yorlin

Регистрация: Nov 2008
Сообщений: 109
Обяви в своем классе паблик массив, и в приложении задай датапровайдер этот же массив.

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
repeater

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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