Comunidad de diseño web y desarrollo en internet online

Busca em arquivos XML com Flash

Citar            
MensajeEscrito el 05 Mar 2009 02:03 pm
Hola!
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]

Por menugeo

1 de clabLevel



 

msie7
Citar            
MensajeEscrito el 05 Mar 2009 02:16 pm
Puedo coger el número de la línea seleccionada:

Código :

var index = myDataGrid.selectedIndex;

pero como cojo las variables de esta línea?

Por menugeo

1 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.