PDA

Volledige versie bekijken : [Data provider]Gewoonweg bewerken ...


Dauntless
%Europe/Berlin %007 %2005, 00:10
Hey,

Ik ben dus bezig met de dataprovider class, maar 't lukt me niet helemaal... 'k Heb al verschillende dingen geprobeert maar telkens geven ze vreemde outputs.

Bv:

trace(dp.length);
for(var i = 0; i<dp.length; i++)
{
trace(dp.getItemAt(i));
trace("--");
}

Hierbij zegt hij dat m'n DP 481 items heeft en ze geven allemaal undefined.

Ik dacht misschien trace(dp.getEditingData().length); of zo, maar die getEditingData heeft dus parameters nodig, en ik zou echt niet weten welke ik moet invullen.

Uiteindelijk moet het dus kunnen om items toe te voegen aan de dataprovider (of verwijderen), zowel op het 1ste niveau (de 'mappen') als op het 2de niveau (de items).

Ik hoop dat iemand (meagain?) tijd en zin heeft om me te helpen :).

Greets,
DL

The_One
%Europe/Berlin %537 %2005, 12:53
Ej DL,

Ik snap je vraag niet helemaal, maar je zei:
Uiteindelijk moet het dus kunnen om items toe te voegen aan de dataprovider (of verwijderen), zowel op het 1ste niveau (de 'mappen') als op het 2de niveau (de items).

Ik heb een klein vb'tje gemaakt waarmee je items kan toevoegen aan een DP of kan verwijderen [op het 1 niveau, zoals jij t noemt:P].

Khoop dat je dit bedoelde :P

Suc6 verder :)!

Dauntless
%Europe/Berlin %738 %2005, 17:43
Het is in principe wel hetzelfde, maar ik heb hem met XML gemaakt...

Kijk, ik heb dit:
<node>
<node label="Communities">
<node label="FlashFocus" title="FlashFocus" info="Coole comunity" url="http://www.flashfocus.nl" />
<node label="Kirupa forums" title="Kirupa forums" info="Nog een leuke flash communitie... " url="http://www.kirupa.com/forum" />
</node>
<node label="Personal">
<node label="Eigen site" title="Eigen site" info="M'n eigen siteje! Nu eindelijk met een portfolio!" url="http://www.dauntless.be" />
</node>
</node>


Let niet op de inhoud, is maar voor opvulling ;).

Wel, nu wil ik zowel categorieën kunnen toevoegen als items aan een categorie.

Hoe doe ik dat? :#
Alvast bedankt voor je tijd, The_One :)

The_One
%Europe/Berlin %768 %2005, 18:26
yo DL,

Ok, ik heb je verkeerd begrepen :) Ik doe echt niks (meer) met XML, sorry dat ik je niet kan helpen.

Als het niet wilt lukken, raad ik je echt aan om met Remoting te werken. Maak een db aan, en haal zo je gegevens in je Flash [via PHP]. Bouw een admin en je kan alles makkelijk toevoegen en verwijderen.
Lekker makkelijk :)!

[ps: is het mogelijk dan om gegevens via Flash in een XML op te slaan? Je hebt dan toch sowieso PHP nodig?]

Dauntless
%Europe/Berlin %771 %2005, 18:31
Jup, php komt er zowieso aan te pas.

TrueChaoZ
%Europe/Berlin %925 %2005, 22:13
Dauntless de DP class is hopeloos niet aan beginnen man :P

Maaruh als je een XML als DP gebruikt dan moet je hem toch omzetten naar een Array? (want de DP is toch 'altijd' een Array? Ja of remoting recordsets)
...A data provider is a linear collection (like an array) of items. Each item is an object composed of many fields of data. You can access these items by index (as you can with an array), using DataProvider.getItemAt()...

Dauntless
%Europe/Berlin %927 %2005, 22:15
Maar toch reageert hij ook niet zoals een array :S Eerder als een string :S Want ik krijg een length van 481, wat denkik ongeveer evenlang zal zijn als die xml string...

Jullie stellen dus voor om rechtstreeks met een array te werken?

Hoe je dan items toevoegd op het '1ste niveau' snap ik, maar hoe mak je een sub node? :#

Folkert
%Europe/Berlin %929 %2005, 22:18
jeXML.onLoad = doeJeDIng;

function doeJeDing( done)
{
//hier roep je functie of trek je de xml leeg (door for loops)
//bijvoorbeeld (phonetische code)
var rootNode = jeXML.haalRootNode();
var nodesNum = rootNode.childNodes.length;

for(var i = 0; i < nodesNum; i++){
//hier loop je in jou geval door de nodes met "Communities" en "Personal"
//ik noem maar even een dataprovider
var deDataProv = new Array();
var node = rootNode.childNodes[i];
var len = node.childNodes.length;
for ( var j =0; j< len; j++)
{
var lLabel = node.childNodes[j].attributes.label;
//en var lTitle en lInfo en lUrl even erbij denken :P
var lData = { title: lTitle, info: lInfo, url: lUrl };
deDataProv[j] = { label: lLabel, data: lData };
}
jeComboBox.dataProvider = deDataProv;
}
}


afijn even phonetisch in code gesproken dan hopelijk word je er wijzer van ;)

Dauntless
%Europe/Berlin %931 %2005, 22:21
Folkert, ga ik met jouw code niet alleen 'personal' zien? Die dataproviders oveschrijven elkaar toch? (JA, 'k heb hier ff geen flash :#)

TrueChaoZ
%Europe/Berlin %940 %2005, 22:34
Hoe je dan items toevoegd op het '1ste niveau' snap ik, maar hoe mak je een sub node? :#Je hebt gelijk voor de Tree component is het eigenlijk handiger om met (of zelfs niet mogelijk zonder) XML te werken, AddTreeNode en dan een recursieve functie zou een uitkomst moeten bieden. Maar een kopie maken van je originele XML object is eigenlijk bijna altijd nodig voor het gebruik met componenten. Hoewel als je de XML goed opbouwt en je hem alleen maar nodig hebt voor een tree component zou het ook moeten kunnen zonder vertaalslag.

TheDutch
%Europe/Berlin %942 %2005, 22:36
Dauntless de DP class is hopeloos niet aan beginnen man :P

Wanneer je er mee om kunt gaan wil je niets anders meer, geloof me :).
Je hebt gelijk voor de Tree component is het eigenlijk handiger om met (of zelfs niet mogelijk zonder) XML te werken.

Das niet waar. Je kunt arrays, xml, queries, etc gewoon gebruiken ;).

@Dauntless: Welke XML wil je als dataprovider in wat voor component?

Dauntless
%Europe/Berlin %950 %2005, 22:49
Dit is m'n oorspronkelijke xml:
http://www.dauntless.be/getBookmarks.php?user=jeroen

Dan wordt hij (nu dus) omgezet naar :
<node>
<node label="Communities">
<node label="FlashFocus" title="FlashFocus" info="Flashfocus :). the place to be" url="http://www.flashfocus.nl" />
<node label="Kirupa forums" title="Kirupa forums" info="Nog een leuke flash communitie..." url="http://www.kirupa.com/forum" />
</node>
<node label="Personal">
<node label="Eigen site" title="Eigen site" info="M'n eigen siteje! Nu eindelijk met een portfolio!" url="http://www.dauntless.be" />
</node>
</node>

En die code is dan dataprovider voor een Tree component.

TheDutch
%Europe/Berlin %954 %2005, 22:54
Wat wil je precies doen? Wil je dingen toevoegen, verwijderen, aanpassen?

Dauntless
%Europe/Berlin %956 %2005, 22:57
Alle drie :D.

TheDutch
%Europe/Berlin %979 %2005, 23:30
Ik dacht dat de Dataprovider class een interne class was die gebruikt werd wanneer je de "dataprovider" attribute gebruikte. Bij deze mijn excuses aan TrueChaoZ, dat ik zei dat de Dataprovider class niet hopeloos was, ik wist niet dat ik niet wist waar ik het over had :P.

Ik heb er wel wat naar gekeken en eigenlijk kan je alleen maar Array of soortgelijke object gebruiken binnen de Dataprovider class. Dus om je XML via de Dataprovider class te laten werken moet je hem handmatig met loops converteren naar een Array. Ik zie geen andere oplossing. Dat is inderdaad hopeloos!

Wat ik niet snap is waarom je (nog) geen gebruik maakt van AMFPHP of Flash Remoting. Dat is ideaal voor database naar Flash. Je kunt dan een recordset terug krijgen die gebruik maakt van de RecordSet class(ook AMFPHP?) wat weer subclassed van de Dataprovider class. Ik gebruik Flash Remoting altijd wanneer ik Flash met een database moet laten communiceren. Ideaal! :).

Mijn conclusie: Converteer je XML naar een array om de Dataprovider class te gebruiken. Wanneer je de XML niet hoeft aan te passen via de Dataprovider class kan je de XML gewoon als dataprovider opgeven binnen de tree component en de tree class methods gebruiken voor eventuele aanpassingen. Je kunt ook eens beginnen te denken aan AMFPHP of Flash Remoting. Hoop dat je ondanks dat ik je niet echt heb kunnen helpen, wel wat aan deze info hebt.

Dauntless
%Europe/Berlin %981 %2005, 23:33
Waarom gebruik ik geen Flash remoting (AMFPHP dan): omdat ik echt veel te weinig php kennis heb :(. Dan zou ik me dus eerst een goede basisch php moeten aanleren, en daarna nog eens 'OOP in php'.

Ik heb nu btw wel de tree gevuld met een xml, maar 't lukt me dus niet om dingen aan te passen.

'k zal proberen om alles in een array te steken en die dan maar te editen...

TheDutch
%Europe/Berlin %983 %2005, 23:36
Waarom gebruik je niet de Tree class methods wanneer je de XML in de tree component hebt geladen?

http://livedocs.macromedia.com/flash/mx2004/main_7_2/00002882.html

TheDutch
%Europe/Berlin %002 %2005, 00:03
Hoe je dan items toevoegd op het '1ste niveau' snap ik, maar hoe mak je een sub node? :#
Ik heb laatst de Tree component gebruikt met een query vanuit MSSQL via Flash Remoting/Coldfusion. Volgensmij heb ik daar een parent column gebruikt om de Tree component te laten weten waar een bepaalde record onder valt. Dit moet ik morgen even nakijken voor je op de mijn werk. Kom ik dus nog op terug :).