![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Mar 2009
Сообщений: 17
|
Идея такая. Считывается с БД сколько существует групп и делается чтолько же вкладок accordion, а каждая вкладка заполняется dataGrid.
Проблема не могу корректно передать в dataGrid itemRender. Как это сделать. <?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. |
|
|||||
|
Регистрация: Apr 2009
Сообщений: 21
|
А как ты понимаешь, что есть проблема ?
Ошибка компиляции или отображается не то, что нужно ? Было бы неплохо увидеть скриншот, если отображается не то, что нужно. Добавлено через 10 минут кстати, попробуй для начала сделать DataGrid с одним только столбцом и заполни его каким-нибудь статическим текстом. Так легче будет понять где ошибка! |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 17
|
Проблема в том, что данные не отображаются (или не отображаются как надо).
Если убрать вставку itemRenderer, 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 Если делаю даже одну колонку в гриде, то данные так же перестаю отображаться ![]() |
|
|||||
|
Регистрация: Apr 2009
Сообщений: 21
|
на вотором изображении не datagrid, а List.
Кроме того List проще сделать. Попробуй List сделать, вместо DataGrid. Или нужно конкретно DataGrid из-за возможности видеть каждый параметр в своем столбце ? кстати, не зная что значит для тебя правильное отображение данных в твоем DataGrid, тебе никто не сможет помочь. Объясни чем тебя не устраивает вид на первом скриншоте ? |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 17
|
Вид не устраивает тем что он не удобен для просмотра пользователем.
На второй картинке именно DataGrid <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> ataGridColumn itemRenderer="components.EmployeeRenderer"/> в код из первого поста. Там немного по другому добавляются данные из-за того что приходится динамически создавать accordion. |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 17
|
Показать EmployeeRenderer я правильно поняла?
<?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> |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 17
|
Цитата:
Или же и это можно сделать более легким способом, то скажите плизз как ![]() Цитата:
Мне хоть как то это отформатировать ![]() |
|
|||||
|
Регистрация: Apr 2009
Сообщений: 21
|
Все-таки что значит "неудобен для просмотра пользователем" ? Размеры столбцов другие нужны ? Или их порядок ?
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:57. |
|
|
« Предыдущая тема | Следующая тема » |
|
|