Anaza
07.04.2009, 19:08
Идея такая. Считывается с БД сколько существует групп и делается чтолько же вкладок 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>
Проблема не могу корректно передать в 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>