Originariamente inviato da beat111
Oddio, e dove devo inserire il codice che mi hai scritto?
nel ciclo quando popoli la combo...
in questa funzione
function CreaCombo(){
trace(item)
prova.addItem("");
for (i=0; i<idItem.length; i++){
//prova.addItem(item[i]);
prova.addItem({data:idItem[i], label:item[i]});
}
}
quindi hai nel valore della prima combo anche i nomi degli altri file xml da richiamare e popolare la seconda combo
ora ti basta duplicare il cod e metterlo sul secondo frame e popoli la seconda combo...dai che funge ho appena provato a fare una cosa del genere
quindi primo frame lo script che ti ho postato leggi i dati dal file xml quando avviene una scelta fai spostare la testina sul secondo frame dove leggi il file scelto dal valore della prima combo
...
supponendo che nel primo file xml creacombo.xml ci siano questi dati
Codice PHP:
<Nome id="primo"/><item>prima voce</item>
<Nome id="secondo"/><item>seconda voce</item>
<Nome id="terzo"/><item>terza voce</item>
<Nome id="quarto"/><item>quarta voce</item>
<Nome id="quinto"/><item>quinta voce</item>
dove primo, secondo....sono i nomi dei file xml che popoleranno la seconda combo
sullo stage hai la prima combo istanziata prova e sul primo frame
Codice PHP:
stop();
this._lockroot=true;
//fscommand ("allowscale", "false");
System.useCodepage = true;
filexml = "creaCombomio.xml";
ApriXML();
function ApriXML () {
mioxml = new XML();
myarray = new Array();
mioxml.load(filexml)
mioxml.onLoad = ElaboraXML;
function ElaboraXML (success) {
if (mioxml.loaded) {
myarray = mioxml.childNodes;
Dati();
CreaCombo();
delete myarray;
delete mioxml;
}
};
};
// Funzione che prende i dati XML e li mette in degli Array
function Dati () {
// Array che contengono i Dati -----------------------
idItem = new Array();
item = new Array();
// ---------------------------------------------------
for (k=0; k<=myarray.length; k++) {
if (myarray[k].nodeName == "Nome") {
idItem.push(myarray[k].attributes.id);
} else if (myarray[k].nodeName == "item") {
item.push(myarray[k].childNodes.toString());
}
//trace(Dettaglio)
};
};
// funzione che mette i dati nella combo
function CreaCombo(){
trace(item)
prova.addItem("");
for (i=0; i<idItem.length; i++){
//prova.addItem(item[i]);
prova.addItem({data:idItem[i], label:item[i]});
}
}
listenerObject = new Object();
listenerObject.change = function(eventObject){
// Inserire qui il codice
var obj = prova.selectedItem;
trace("È stato selezionato il valore: " + obj.label);
trace("richiamo per la seconda combo il file xml "+obj.data)
chi=obj.data
//trace(selezione)
gotoAndStop(2);
}
prova.addEventListener("change", listenerObject)
poi sul secondo frame hai la seconda combo, istanziata prova1, che popoli di volta in volta con i dati passati dal file xml scelto nella prima combo
sul secondo frame avrai la lettura del file scelto
Codice PHP:
stop();
System.useCodepage = true;
filexml1 = chi+".xml";
ApriXML1();
function ApriXML1 () {
_root.loading = "Connecting to Data Base for XML data...";
mioxml = new XML();
myarray = new Array();
mioxml.load(filexml1)
//mioxml.load(filexml + "&rnd=" + random(999999));
mioxml.onLoad = ElaboraXML;
function ElaboraXML (success) {
if (mioxml.loaded) {
myarray = mioxml.childNodes;
Dati1();
CreaCombo1();
delete myarray;
delete mioxml;
}
};
};
// Funzione che prende i dati XML e li mette in degli Array
function Dati1 () {
// Array che contengono i Dati -----------------------
idItem1 = new Array();
item1 = new Array();
// ---------------------------------------------------
for (k=0; k<=myarray.length; k++) {
if (myarray[k].nodeName == "Nome") {
idItem1.push(myarray[k].attributes.id);
} else if (myarray[k].nodeName == "item") {
item1.push(myarray[k].childNodes.toString());
}
//trace(Dettaglio)
};
};
// funzione che mette i dati nella combo
function CreaCombo1(){
trace(item1)
prova1.addItem("");
for (i=0; i<idItem1.length; i++){
prova1.addItem({data:idItem1[i], label:item1[i]});
}
}
listenerObject1 = new Object();
listenerObject1.change = function(eventObject){
// Inserire qui il codice
var obj = prova1.selectedItem;
trace("È stato selezionato il valore: " + obj.label);
trace("richiamo per la seconda combo il file xml "+obj.data)
selezione=obj.data
trace(selezione)
}
prova1.addEventListener("change", listenerObject1)
ovviamente ora dovresti solo vedere il fatto che cambiando altre voci come reagisce
e fare un controllo ...