Просмотр полной версии : xml to datagrid как ?
darksranger
21.10.2008, 07:31
собственно имеем
xml файл в виде
<?xml version="1.0" encoding="windows-1251" ?>
<entire><all><![CDATA[14]]></all>
<track><![CDATA[данные]></track>
<time><![CDATA[данные]></time>
<track><![CDATA[данные]></track>
<time><![CDATA[данные]></time>
</entire>
mxml код
<mx:DataGrid x="19" y="130" width="676" height="463" id="output" >
<mx:columns>
<mx:DataGridColumn headerText="Время" dataField="time"/>
<mx:DataGridColumn headerText="Трэк" dataField="track"/>
</mx:columns>
</mx:DataGrid>
функция в которую приходит xml
private function onServerAnswerlist(e:Event):void {
myXML = new XML(e.target.data); - сосбтвенно пытаюсь в datagrid, распарсировать пришедший xmllist
output.dataProvider = myXML
}
в итоге получаю
полный бардак, всмысле, получаю по одному значению в таблице, в котором лежит весь xml, в том виде в котором пришел
гуглил но чето не чего путного не нашел
что не так делаю ?
сосбтвенно пытаюсь в datagrid, распарсировать пришедший xmllist
вы уверены что приходит xmllist? Я этого не вижу например.
Molecula
21.10.2008, 18:08
всмысле, получаю по одному значению в таблице
Логично:
If you set the property to an XML object, it will be converted into an XMLListCollection with only one item.
Почитайте хелп ещё раз, внимательней.
darksranger
21.10.2008, 20:14
я уверен что получаю XMLList
на форуме тыщу раз поднималась тема, НО везде xml получали через http reqest,
а мне нужно через URLLoader, тоесть через его ответ, потому, как XML отдает php скрипт, в этом и загвоздка, как через http реализовать я знаю, а как тут не понимаю
получаю я приблизительно его так
private function sameAnswer(e:Event):void {
e.target.data
}
вобщем проблема в том что мне не понять как полученный ответ парсировать в правильный формат для dataProvaider
вобщем, как то так, чесно просидел всю ночь ( правда сидел уже уставший, ответа пока не нашел )
в голову приходят разные мысли
например парсировать построчно полученный ответ и вставлять их в ячейки, но пока не досообразил, как получить доступ, к ячейки в столбце, да и вобще идея слишком геморная :(
я приблизительно понимаю, какой ответ, должен быть для dataprovaider, загвоздка в том, что я незнаю, как к нему привести полученный ответ, через UrlLoader
darksranger
22.10.2008, 03:49
мало ли кому то пригодится я решил проблему :)
xml пришедший в ответе URLLoader'a
<root>
<all><![CDATA[15]]></all>
<info>
<track><![CDATA[данные]]></track>
<time><![CDATA[данные]]></time>
</info>
<info>
<track><![CDATA[данные]]></track>
<time><![CDATA[данные]]></time>
</info>
<info>
<track><![CDATA[данные]]></track>
<time><![CDATA[данные]]></time>
</info>
</root>
обратите внимание каждый блок выделен
private function serverAnswer(e:Event):void{
loadedXML = new XMLList(e.target.data)
var arr:Array = new Array();
for each (var item:XML in loadedXML){
arr.push(item.info);
}
после кода выше xml приобретает такой вид
<info>
<track><![CDATA[данные]]></track>
<time><![CDATA[данные]]></time>
</info>
<info>
<track><![CDATA[данные]]></track>
<time><![CDATA[данные]]></time>
</info>
<info>
<track><![CDATA[данные]]></track>
<time><![CDATA[данные]]></time>
</info>
тоесть мы вытащили только блоки нужные нам
далее мы его конвертируем в XMLList
var XMLL:XMLList = new XMLList(arr);
и отдаем в dataProvaider
output.dataProvider = XMLL;
все :) теперь все нормально ;)
PS
сам DataGrid
<mx:DataGrid x="19" y="130" width="676" height="600" id="output">
<mx:columns>
<mx:DataGridColumn headerText="Время" dataField="time"/>
<mx:DataGridColumn headerText="Трэк" dataField="track"/>
</mx:columns>
</mx:DataGrid>
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.