| insected |
27.11.2008 09:40 |
Заполнить DataGrid по XML
Здравствуйте, возникли проблемы с заполнением DataGrid данными, полученными из XML файла, вот его структура:
Код:
<schedule>
<day name="Понедельник">
<lesson>
<group name="group1" />
<auditory name="aud1" />
</lesson>
<lesson>
<group name="group2" />
<auditory name="aud2" />
</lesson>
</day>
<day name="Вторник">
<lesson>
<group name="group1" />
<auditory name="aud1" />
</lesson>
<lesson>
<group name="group2" />
<auditory name="aud2" />
</lesson>
</day>
.....
</schedule>
Нужно по этому делу сформировать расписание в DataGrid.
Вот код компонента:
Код:
<mx:DataGrid xmlns:mx="http://www.adobe.com/2006/mxml" initialize="onInitialize(event)" draggableColumns="false" sortableColumns="false">
<mx:Script>
<![CDATA[
import mx.controls.dataGridClasses.DataGridColumn;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
[Bindable]
private var nodes:XMLList;
[Bindable]
private var lessons:Array = new Array();
[Bindable]
public var initDG:ArrayCollection;
private function onInitialize(evt:Event):void
{
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE,onLoaded);
try
{
loader.load(new URLRequest("../assets/schedule.xml"));
}
catch(e:Error)
{
Alert.show("Произошла ошибка при загрузке данных");
}
function onLoaded(event:Event):void
{
nodes = XMLList(loader.data);
fillGrid(nodes);
}
}
private function fillGrid(nodes:XMLList):void
{
var cols:Array = new Array();
for each(var day:XML in nodes.children())
{
var column:DataGridColumn = new DataGridColumn();
column.dataField = day.@name;
cols.push(column);
for each(var lesson:XML in day.*)
{
items.push(lesson.group.@name);
}
}
this.columns = cols;
}
]]>
</mx:Script>
</mx:DataGrid>
Ну понятно, что я делаю: гружу XML и сую в грид колонки с именем дня. А как заполнить каждую колонку нужными данными lesson? (в каждой клетке должны быть номер группы и аудитория, ну пока можно просто что то одно...) Может как то переорганизовать структуру XML, чтобы было более удобно? Подскажите плиз...
|