| Autor | Zpráva | ||
|---|---|---|---|
| GrayLite Profil * |
#1 · Zasláno: 21. 7. 2008, 16:18:06
Dobrý den,
mám takový problém, který sem zatím nikde neviděl řešený (natož vyřešený :)). Načítám z XML souboru data, která chci poté zobrazit v komponentě DataGrid. Všude v ukázkových příkladech je napsáno, jak to udělat...jenže nikde není možnost neznalosti počtu sloupců. V PHP by to bylo jednoduché generování názvů proměnných, ale v ActionScriptu 3 sem to vážně nenašel :) Chtěl bych tedy předat DataProvideru komponenty DataGrid data z XML, a to generování třeba následujícího objektu: dataXML({pole_1:hodnota, pole_2:hodnota,...,pole_x:hodnota}). Snad jsem to popsal dost srozumitelně :) Tohle řešení je jediné, co by se tak podobalo mým potřebám, ale dělat if do nekonečna mi přijde blbost....nebo tedy třeba pro 100 sloupců :) var obj:Object=new Object(); var s:Number=node.childNodes[i].childNodes.length; for(var j:int=0;j < s;j++) { if(i==0) my_root.colonne_array.push(node.childNodes[i].childNodes[j].node Name); if(j==0) obj.titolo=node.childNodes[i].childNodes[j].firstChild.nodeValue ; if(j==1) obj.artista=node.childNodes[i].childNodes[j].firstChild.nodeValu e; if(j==2) obj.nazione=node.childNodes[i].childNodes[j].firstChild.nodeValu e; if(j==3) obj.casa_discografica=node.childNodes[i].childNodes[j].firstChil d.nodeValue; if(j==4) obj.prezzo='? '+node.childNodes[i].childNodes[j].firstChild.nodeValue; if(j==5) obj.anno=node.childNodes[i].childNodes[j].firstChild.nodeValue; } my_root.objects_array.push(obj); PS: Tento kousek kódu je samozřejmě výřez s funkční aplikace, kde se počítá s maximálně 6ti sloupci v tabulce. |
||
| GrayLite Profil |
#2 · Zasláno: 21. 7. 2008, 17:22:21
Odpověď sem vymyslel....tak snad to někomu bude platné ;)
package {
import flash.display.Sprite;
import fl.controls.DataGrid;
import fl.controls.dataGridClasses.DataGridColumn;
import flash.display.Stage;
import fl.data.DataProvider;
public class Main extends Sprite {
public function Main() {
var dg:DataGrid;
var dp:DataProvider;
var dataXML:XML = <tabulka>
<radek>
<pole_1>Jméno</pole_1>
<pole_2>Příjmení</pole_2>
<pole_3>IČ</pole_3>
<pole_4>Rodné číslo</pole_4>
</radek>
<radek>
<pole_1>Petr</pole_1>
<pole_2>Klíč</pole_2>
<pole_3>21321321</pole_3>
<pole_4>9832133123</pole_4>
</radek>
<radek>
<pole_1>Ferda</pole_1>
<pole_2>Mravenec</pole_2>
<pole_3>12313</pole_3>
<pole_4>2132165465</pole_4>
</radek>
</tabulka>;
dg = new DataGrid();
dp = new DataProvider(dataXML);
var numColumns:uint = dataXML.child("radek")[0].elements("*").length();
for (var i:uint=1; i<=numColumns; i++) {
var tmpCol:DataGridColumn;
tmpCol = new DataGridColumn("pole_" + i);
tmpCol.headerText = "Název " + i;
dg.addColumn(tmpCol);
}
dg.width = stage.stageWidth;
dg.height = stage.stageHeight;
dg.dataProvider = dp;
addChild(dg);
}
}
}
|
||
|
Časová prodleva: 18 let
|
|||
0