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

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

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

Регистрация: Mar 2009
Сообщений: 17
По умолчанию Динамический Accordion и DataGrid

Идея такая. Считывается с БД сколько существует групп и делается чтолько же вкладок accordion, а каждая вкладка заполняется dataGrid.

Проблема не могу корректно передать в dataGrid itemRender. Как это сделать.
Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
	pageTitle="Student"
	creationComplete="init()" 
	xmlns:comp="components.*" 
	width="416">
 
	<mx:Script>
		<![CDATA[
			import valueObjects.Student;
			import valueObjects.Group;
			import mx.collections.ArrayCollection;
			import mx.rpc.events.ResultEvent; 
			import mx.rpc.events.FaultEvent; 
			import mx.controls.Alert;
			import mx.containers.VBox;
			import mx.controls.DataGrid;
			import mx.controls.dataGridClasses.DataGridColumn;
 
			[Bindable]
			public var stud:Student;
 
			[Bindable]
			public var group:Group;
 
			[Bindable]
			public var dataGr:DataGrid;
 
			[Bindable]
			public var groupData:ArrayCollection;
 
			[Bindable]
			public var studData:ArrayCollection;
 
			private function init():void{
				doGet.send();
				getGroup.send();
				stud = new Student();
				group = new Group();	
			}
 
 			private function resultHandler(event:ResultEvent):void{
				studData = new ArrayCollection();
				var studResultData:ArrayCollection = event.result.students.student;
				var resultLength:Number = studResultData.length;
				for (var i:Number = 0; i < resultLength; i++){
					var tempObject:Student1 = new Student1();
					tempObject.id = studResultData.getItemAt(i).partyId;
					tempObject.name = studResultData.getItemAt(i).firstName;					
					studData.addItem(tempObject);
				}
			}
 
			private function resultGroupHandler(event:ResultEvent):void{
				groupData = new ArrayCollection();
				var groupResultData:ArrayCollection = event.result.groups.group;
				var resultLength:Number = groupResultData.length;
				for (var i:Number = 0; i < resultLength; i++){
					var tempObject:Group = new Group();
					tempObject.groupId = groupResultData.getItemAt(i).groupId;
					tempObject.courseName = groupResultData.getItemAt(i).courseName;
					groupData.addItem(tempObject);
 
//Создание элемента для accordian					
					var vbox:VBox = new VBox();
                                        vbox.label = tempObject.courseName;
                                        vbox.percentWidth = 416;
                                        vbox.percentHeight = 451;
 
//Создание dataGrid                    
                                        dataGr = new DataGrid();
                                        var dgcolumns:Array = new Array();
					var dgcolumn1:DataGridColumn = new DataGridColumn();
 
                                        dataGr.percentWidth = 416;
                                        dataGr.percentHeight = 451;
                                        dataGr.dataProvider = studData;
                                        dataGr.columns = dgcolumns;
 
//Необходимо чтоб dataGrid состоял из itemRenderer="components.EmployeeRenderer", таким образом оно не работает ((
                                        var employeeRenderer:ClassFactory = new ClassFactory(EmployeeRenderer);
                                        dgcolumn1.itemRenderer = employeeRenderer;
					dgcolumns.push(dgcolumn1)
 
                                        vbox.addChild(dataGr);
 
                                        accordion.addChild(vbox);
				}
 
			}
 
			private function faultHandler(event:FaultEvent):void{ 
				Alert.show("Where was a problem.","Error"); 
			} 
		]]>
	</mx:Script>
 
  	<mx:HTTPService id="doGet" 
  		url="http://localhost:8080/bimportal/control/getFlexStudent" method="POST"
		result="resultHandler(event)"
		fault="faultHandler(event)"/>
 
	<mx:HTTPService id="getGroup" 
  		url="http://localhost:8080/bimportal/control/getFlexGroup" method="POST"
		result="resultGroupHandler(event)"
		fault="faultHandler(event)"/>
 
	<mx:Accordion id="accordion" width="414" height="451">
	</mx:Accordion>
 
</mx:Application>


Последний раз редактировалось Anaza; 08.04.2009 в 11:50.
Старый 08.04.2009, 11:13
Tim SharK вне форума Посмотреть профиль Отправить личное сообщение для Tim SharK Найти все сообщения от Tim SharK
  № 2  
Ответить с цитированием
Tim SharK

Регистрация: Apr 2009
Сообщений: 21
А как ты понимаешь, что есть проблема ?
Ошибка компиляции или отображается не то, что нужно ?
Было бы неплохо увидеть скриншот, если отображается не то, что нужно.

Добавлено через 10 минут
кстати, попробуй для начала сделать DataGrid с одним только столбцом и заполни его каким-нибудь статическим текстом. Так легче будет понять где ошибка!

Старый 08.04.2009, 11:49
Anaza вне форума Посмотреть профиль Отправить личное сообщение для Anaza Найти все сообщения от Anaza
  № 3  
Ответить с цитированием
Anaza

Регистрация: Mar 2009
Сообщений: 17
Проблема в том, что данные не отображаются (или не отображаются как надо).

Если убрать вставку itemRenderer,

Код AS3:
dataGr.columns = dgcolumns;
 
var employeeRenderer:ClassFactory = new ClassFactory(EmployeeRenderer);
dgcolumn1.itemRenderer = employeeRenderer;
dgcolumn1.dataField = "groupId";
dgcolumns.push(dgcolumn1);
то получиться такой вид

[IMG]http://s58.***********/i159/0904/d7/4bc90f6cf1cbt.jpg[/IMG]

Если вставить его, то данные не отображаются совсем. А хотелось бы что б была на подобии

[IMG]http://s41.***********/i092/0904/2d/f64e3e70a7cbt.jpg[/IMG]

PS Если делаю даже одну колонку в гриде, то данные так же перестаю отображаться

Старый 08.04.2009, 11:53
Tim SharK вне форума Посмотреть профиль Отправить личное сообщение для Tim SharK Найти все сообщения от Tim SharK
  № 4  
Ответить с цитированием
Tim SharK

Регистрация: Apr 2009
Сообщений: 21
на вотором изображении не datagrid, а List.
Кроме того List проще сделать.
Попробуй List сделать, вместо DataGrid.

Или нужно конкретно DataGrid из-за возможности видеть каждый параметр в своем столбце ?


кстати, не зная что значит для тебя правильное отображение данных в твоем DataGrid, тебе никто не сможет помочь. Объясни чем тебя не устраивает вид на первом скриншоте ?

Старый 08.04.2009, 12:24
Anaza вне форума Посмотреть профиль Отправить личное сообщение для Anaza Найти все сообщения от Anaza
  № 5  
Ответить с цитированием
Anaza

Регистрация: Mar 2009
Сообщений: 17
Вид не устраивает тем что он не удобен для просмотра пользователем.

На второй картинке именно DataGrid

Код AS3:
	<mx:DataGrid id="employeeGrid" 
		dataProvider="{gridData}" x="22" y="20"
		itemClick="itemClickHandler(event)" height="465">
			<mx:columns>
				<mx:DataGridColumn itemRenderer="components.EmployeeRenderer"/>
			</mx:columns>
		</mx:DataGrid>
Лист можно попробовать, но основная проблема при этом не исчезнет, а она в том, чтоб вставить <mxataGridColumn itemRenderer="components.EmployeeRenderer"/> в код из первого поста. Там немного по другому добавляются данные из-за того что приходится динамически создавать accordion.

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

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

Старый 08.04.2009, 13:02
Anaza вне форума Посмотреть профиль Отправить личное сообщение для Anaza Найти все сообщения от Anaza
  № 7  
Ответить с цитированием
Anaza

Регистрация: Mar 2009
Сообщений: 17
Показать EmployeeRenderer я правильно поняла?

Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"
	horizontalAlign="absolute"
	initialize="init()" 
	width="100%" height="96" verticalScrollPolicy="off">
 
	<mx:Script>
		<![CDATA[
			import valueObjects.Student;
			import flash.net.URLLoader;
			import flash.net.URLRequest;
 
 
			[Bindable]	
			private var imagePath:String;	
 
			private var loader:URLLoader;
 
			private function init():void{
				loader = new URLLoader();
				loader.addEventListener(Event.COMPLETE, loaderHandler);
				loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
			}
 
			private function loaderHandler(success:String):void{
				if (success){
					imagePath = "foto/" + data.image;
				}
			}
 
			private function ioErrorHandler(event:IOErrorEvent):void{
				imagePath = "foto/2400.jpg";
			}			
 
			override public function set data(value:Object):void{
				super.data = value;
				var requestURL:URLRequest = new URLRequest("foto/" + data.image);
				loader.load(requestURL);
			}
		]]>
	</mx:Script>
	<mx:Image
		source="{imagePath}" width="80"/>
	<mx:VBox horizontalScrollPolicy="off" height="96">
		<mx:Label text="{data.name} {data.fatherName} {data.surname}"  fontWeight="bold" fontSize="12"/>	
		<mx:Label text="Группа: {data.studGroup}"/>
		<mx:Label text="Email: {data.email}"/>       
		<mx:Label text="Тел: {data.mobile}"/>	
	</mx:VBox>
</mx:HBox>

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

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

Старый 08.04.2009, 13:24
Anaza вне форума Посмотреть профиль Отправить личное сообщение для Anaza Найти все сообщения от Anaza
  № 9  
Ответить с цитированием
Anaza

Регистрация: Mar 2009
Сообщений: 17
Цитата:
Сообщение от GBee Посмотреть сообщение
Вроде все ок, только картинку через одно место грузите, просто в сурс путь запихнуть не судьба?
тут типо хитро, если не найдена картинка, то ставится по умолчанию.
Или же и это можно сделать более легким способом, то скажите плизз как

Цитата:
Все-таки что значит "неудобен для просмотра пользователем" ? Размеры столбцов другие нужны ? Или их порядок ?
Количество (нужно выводить не все столбцы), порядок (сначал имя, фамилия и пр), размер соответственно и нужна ФОТКА. Хотя как говорила если добавлять текст с колонкой то данные перестают отображаться.

Мне хоть как то это отформатировать

Старый 08.04.2009, 13:11
Tim SharK вне форума Посмотреть профиль Отправить личное сообщение для Tim SharK Найти все сообщения от Tim SharK
  № 10  
Ответить с цитированием
Tim SharK

Регистрация: Apr 2009
Сообщений: 21
Все-таки что значит "неудобен для просмотра пользователем" ? Размеры столбцов другие нужны ? Или их порядок ?

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

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

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


 


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


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