20/04/2004, 13:36
|
| | Fecha de Ingreso: febrero-2004 Ubicación: alicante
Mensajes: 28
Antigüedad: 20 años, 9 meses Puntos: 0 | |
Solo para expertos A traves de un XML que contiene la siguiente informacion:
<?xml version="1.0" encoding="UTF-8"?>
<musica>
<tema>
<nombre>My Sacrifice</nombre>
<artista>creed</artista>
<duracion>294922</duracion>
<bitRate>192</bitRate>
<clasificacion>Internacional</clasificacion>
</tema>
<tema>
<nombre>I like a bird</nombre>
<artista>Nelly Furtado</artista>
<duracion>249025</duracion>
<bitRate>192</bitRate>
<clasificacion>Internacional</clasificacion>
</tema>
<tema>
<nombre>Sexual Revolution</nombre>
<artista>Macy Gray</artista>
<album>The ID</album>
<duracion>285962</duracion>
<año>2001</año>
<bitRate>192</bitRate>
<clasificacion>Internacional</clasificacion>
</tema>
<tema>
<nombre>Turn Off the Light</nombre>
<artista>Nelly Furtado</artista>
<duracion>273502</duracion>
<bitRate>192</bitRate>
<clasificacion>Internacional</clasificacion>
</tema>
<tema>
<nombre>All The Love</nombre>
<artista>The Outfield</artista>
<duracion>210703</duracion>
<bitRate>160</bitRate>
<clasificacion>Internacional</clasificacion>
</tema>
<tema>
<nombre>Cosas imposibles</nombre>
<artista>Gustavo Cerati</artista>
<album>Siempre es hoy</album>
<duracion>307565</duracion>
<bitRate>128</bitRate>
<clasificacion>Nacional</clasificacion>
</tema>
<tema>
<nombre>By the Way</nombre>
<artista>Red Hot Chili Peppers</artista>
<album>By The Way</album>
<duracion>257567</duracion>
<año>2002</año>
<bitRate>128</bitRate>
<clasificacion>Internacional</clasificacion>
</tema>
</musica>
Puedo filtrar la informacion a traves del siguiente codigo y con ayuda de tres radiobuton (uno de 192,160,128) cuyo nombre de grupo es bitRate, los datos aparecen en un datagrid actualizado.El codigo es el siguiente:
// Creamos y Cargamos el Objeto XML
miMusica = new XML();
miMusica.ignoreWhite = true;
miMusica.onLoad = function(resultado) {
if (resultado) {
misTemas = miMusica.firstChild.childNodes;
datosDeTemas = [];
for (i in misTemas) {
var matrizDatos = misTemas[i].childNodes;
var objetoTemp = new Object();
for (datos in matrizDatos) {
var nombreDato = matrizDatos[datos].nodeName;
var valorDato = matrizDatos[datos].firstChild;
objetoTemp[nombreDato] = valorDato;
}
datosDeTemas.push(objetoTemp);
delete (objetoTemp);
}
miDataGrid.removeAllColumns();
miDataGrid.hScrollPolicy = "on";
miDataGrid.maxHPosition = 200;
miDataGrid.dataProvider = datosDeTemas;
} else {
trace("Hubo un problema con la carga del XML");
}
};
miMusica.load("musica.xml");
//
// Texto Inicial del DataGrid
miDataGrid.dataProvider = [{Estado:"Cargando Datos Externos"}, {Estado:"Espere Por Favor"}];
//
// Escuchador de RadioButtno
escuchador = new Object();
escuchador.click = function(esto) {
dato = esto.target.groupName;
valor = esto.target.selection.label;
filtrar(dato, valor);
};
bitRate.addEventListener("click", escuchador);
//
// Funcion para filtrar Datos
function filtrar(dato, valor) {
var temasTemp = [];
for (i in datosDeTemas) {
var objetoTemp = datosDeTemas[i];
// El string se debe a que sino no le da la cabeza para comparar un Objeto con una cadena.
if (String(objetoTemp[dato]) == valor) {
temasTemp.push(objetoTemp);
}
}
miDataGrid.removeAllColumns();
miDataGrid.dataProvider = temasTemp;
}
Mi problema es el siguiente, por mas que lo intento no consigo introducir otro grupo de radiobuton que me reduzca la información aun mas, es decir, que el listado se reduzca con el filtrado del bitrate y se reduzca aun mas al seleccionar el otro grupo de radiobutons(por ejemplo por el año).
Otra consulta seria, como mostrar los datos en el datagrid de una pelicula cargada a traves de un boton (es decir, filtrar la informacion para una serie de grupos de radiobutons y al pulsar un boton de busqueda cargar una pelicula o instancia con un datagrid y los resultados).
Gracias y perdonad por la lectura tan ardua¡¡¡
__________________ alo |