Encontré un flash para buscar datos dentro en fichero xml . Es muy bueno pero el problema que tiene después de encontrar los datos no tiene botón para abrir las y para coger una variable que se puede usar después.
Entente poner “selectedIndex” y “this.selectedItem” pero no me funciona!
Pido ayuda! Se necesito que después de elegir ina de las líneas encontradas, abrir la selección!
Amplio todos los datos abajo:
Grasias
ejemplo:
download dos arquivos clicando aqui.
ver codigo:
Codigo:
1 frame:
Código :
//cria variáveis var xmls:XML = new XML(); xmls.ignoreWhite = true; var dbXmls:Array = new Array(); //neste array ficarão a referencia aos xmls var dbDados:Array = new Array(); //aqui ficarão os dados var criados:Object = new Object(); //objeto que verá se o xml já foi criado no dbDados //carrega a lista de xmls no dbXmls xmls.onLoad = function() { for (i=0; i<xmls.childNodes[0].childNodes.length; i++) { dbXmls.push(xmls.childNodes[0].childNodes[i].childNodes); } nextFrame(); }; //manda carregar a lista xmls.load("xml/MP3s.xml"); //prototype replace String.prototype.replace = function(orig, replac, z) { var dbLetras:Array = this.split(''); var dbSubs:Array = replac.split(''); if (orig.length>1) { var strRep = dbLetras.join(''); while (strRep.indexOf(orig)>=0) { var ind = this.indexOf(orig); var strAdd = dbSubs.join(''); dbLetras.splice(ind,orig.length,strAdd); strRep = dbLetras.join(''); } } else { if (z == undefined) { z = this.lastIndexOf(orig); } for (var i = 0, n = 0; i<dbLetras.length && n<z; i++) { if (dbLetras[i] == orig) { dbLetras[i] = replac; n++; } } } return dbLetras.join(''); }; stop();
2.Código do segundo frame:
Código :
//importando classes import mx.controls.gridclasses.DataGridColumn; //função de adição var keyw:String = new String(); var dbResults:Array = new Array(); var xmlResult:XML = new XML(); var myDataGrid:mx.controls.DataGrid; xmlResult.ignoreWhite = true; var ini = 0; var atual; var arraysCriados:Boolean = false; var numResults; //ação do botão que inicia a busca search.onRelease = function() { if (keyword.text == "") { //se não tiver digitado nada, avisa labelText = "Informe uma palavra para busca..."; } else { //manda construir o array de dados construirArray(); } }; String; function limpaDataGrid() { myDataGrid.removeAll(); // removeItemAt } //função que grava os registros function Buscar(keyw) { labelText = "Realizando busca..."; arraysCriados = true; //trace("Estou procurando por "+keyw); //reseta busca anterior limpaDataGrid(); numResults = 0; //loop nos xmls for (i=0; i<dbDados.length; i++) { for (j=0; j<dbDados[i].length; j++) { //search String var searchString = dbDados[i][j][0].toString().toUpperCase(); keyw = keyw.toUpperCase(); var searchCD:String = dbXmls[i].toString(); searchCD = searchCD.replace(".xml", ""); //procurando if (searchString.indexOf(keyw)>=0) { //trace("Achamos: "+searchString); var item_obj:Object = {Arquivo:searchString, CD:searchCD}; myDataGrid.addItem(item_obj); numResults++; } } } labelText = "Foram encontrados "+numResults+" resultados."; } //função contruir arrays function construirArray() { //se o array de dados não foi criado if (!arraysCriados) { //avisa que está construindo labelText = "Contruindo base de informações. Aguarde..."; //verifica se a referência foi criada if (criados[ini] != true) { //se não, cria criaArray(ini); } //passa valores atual = ini; ini++; } else { //se tiver todos criados, efetua a busca Buscar(keyword.text); } } //função que cria um array com resultados function criaArray(a) { //cria um array na posição do dbDados dbDados[a] = new Array(); criados[a] = true; //carrega o xml correspondente //trace("Carregando "+dbXmls[a]); xmlResult.load("xml/"+dbXmls[a]); } //função de onload xmlResult.onLoad = function(a) { //faz o loop e armazena for (j=0; j<xmlResult.childNodes[0].childNodes.length; j++) { //cria um novo subarray dbDados[atual][j] = new Array(xmlResult.childNodes[0].childNodes[j].childNodes.length); //verifica quantos campos e faz um loop para armazenar o conteúdo for (a=0; a<xmlResult.childNodes[0].childNodes[j].childNodes.length; a++) { dbDados[atual][j][a] = xmlResult.childNodes[0].childNodes[j].childNodes[a].childNodes; } } //verifica se já carregou tudo if (ini<dbXmls.length) { //se não, manda construir o proximo construirArray(); } else { //se sim, seta a variavel de criação como true e manda buscar arraysCriados = true; Buscar(keyword.text); } }; //construção do dataGrid function construirDataGrid() { var coluna_arquivo:DataGridColumn = new DataGridColumn("Arquivo"); coluna_arquivo.width = 450; var coluna_cd:DataGridColumn = new DataGridColumn("CD"); coluna_cd.width = 140; myDataGrid.addColumn(coluna_arquivo); myDataGrid.addColumn(coluna_cd); } construirDataGrid();
Mi correo: [email protected]