Mi web consta de dos secciones y un menu con dos botones, una es el datagrid que se carga externamente y otra es una presentación que tambien se carga esternamente.
El datagrid carga los datos a mostrar de una base de datos mysql via php. En este datagrid muestro una sola columna y cuando pulso sobre esta me muestra el resto de datos en unos campos dinámicos situados a la derecha del datagrid. Resulta que cuando cargo por primera vez la sección del datagrid funciona bien, pero si cambio de sección y vuelvo de nuevo a la sección dl datagrid ya no me carga los datos, es decir, sólo funciona bien cuando lo cargo por primera vez. Alguna solución? Gracias
Este es el código que utilizo :
- mostraragenda.php es el fichero que carga los datos de la base de datos a Flash :
Código PHP:
<?php
$link = mysql_connect ("localhost", "root", "");
mysql_select_db("site");
$result = mysql_query ("SELECT * FROM agenda") or die ("Invalid query");
echo
"<datos>";
while($row = mysql_fetch_array($result)) {
echo
"<pelicula>
<id>" . $row["id"] . "</id>
<cab>" . strtoupper($row["cabecera"] ). "</cab>
<tex>" . $row["texto"] . "</tex>
<fec>" . $row["fecha"] . "</fec>
<fot>" . $row["foto"]. "</fot>
</pelicula>";
}
echo "</datos>";
mysql_free_result($result);
?>
</documento>
- el código de dentro del flash :
Código:
System.useCodepage = true; import mx.controls.gridclasses.DataGridColumn; import mx.styles.CSSStyleDeclaration; //ESTIL0 DE LA CABRCERA DEL GRID // Style for DataGrid var styleObj:CSSStyleDeclaration= new mx.styles.CSSStyleDeclaration(); styleObj.styleName = "myStyle"; styleObj.fontFamily = "Verdana"; styleObj.fontSize = 9; styleObj.fontWeight = "bold"; styleObj.color = 0x333333; _global.styles["myStyle"] = styleObj; pelis_grid.setStyle("styleName", "myStyle"); pelis_grid.setStyle("alternatingRowColors", Array(0xEAEFF4, 0xF8FAFB)); pelis_grid.setRowHeight(30); pelis_grid.setStyle("hGridLines", true); pelis_grid.setStyle("hGridLineColor", 0xC1D1E0); pelis_grid.setStyle("vGridLines", true); pelis_grid.setStyle("vGridLineColor", 0xC1D1E0); pelis_grid.setStyle("borderStyle", "inset"); // top pelis_grid.setStyle("buttonColor", 0xFFFFFF); pelis_grid.setStyle("highlightColor", 0xFFFFFF); // right and left pelis_grid.setStyle("borderCapColor", 0xFFFFFF); pelis_grid.setStyle("shadowCapColor", 0xFFFFFF); // bottom pelis_grid.setStyle("shadowColor", 0x336699); pelis_grid.setStyle("borderColor", 0xFFFFFF); //datagrid.resizableColumns = false; //datagrid.setVScrollPolicy("off"); // themeColor pelis_grid.setStyle("themeColor", 0xADC1D6); pelis_grid.setStyle("useRollOver", true); pelis_grid.setStyle("textSelectedColor", 0x333333); // rollOver on Header pelis_grid.setStyle("rollOverColor", 0xD7FFD7); // Header //datagrid.setShowHeaders(false); // Header style var styleHeader:CSSStyleDeclaration= new mx.styles.CSSStyleDeclaration(); styleHeader.styleName = "myStyleHeader"; styleHeader.fontFamily = "Verdana"; styleHeader.fontSize = 10; styleHeader.fontWeight = "bold"; styleHeader.color = 0x336699; _global.styles["myStyleHeader"] = styleHeader; pelis_grid.setStyle("headerStyle", styleHeader); pelis_grid.setHeaderHeight(30); pelis_grid.setStyle("headerColor", 0xFFFFFF); // Mettre la fleche de tri en bleu var headerListener = new Object(); headerListener.headerRelease = function(eventObj) { var target = eventObj.target; var owner = target.owner; var dg = owner.pelis_grid; var colorArrow = new Color(dg.sortArrow); colorArrow.setRGB(0x336699); } pelis_grid.addEventListener("headerRelease", headerListener); pelis_grid.owner = this; // -------------------- pelis_grid.setHeaderHeight(30); pelis_grid.rowHeight = 60; pelis_grid.headerHeight = 30; //Declaramos variables enviar_lv = new LoadVars(); recibir_lv = new LoadVars(); var ordenarHacia:String = new String("asc"); var ordenarPor:String = new String(); var miXML:XML = new XML(); var pelisGrid:Array = new Array(); var alOrdenar:Object = new Object(); var alClicar:Object = new Object(); var alSeleccionar:Object = new Object(); var selec_str:String = new String(); /***************************** EMPEZAMOS *********************************/ //Cargamos el XML miXML.ignoreWhite = true; miXML.onLoad = function(success){ //Cargamos y llenamos el array if (success){ for (i=0; i<miXML.firstChild.firstChild.childNodes.length; i++){ pelisGrid.addItem({ID: miXML.firstChild.firstChild.childNodes[i].childNodes[0].firstChild, Cabecera: miXML.firstChild.firstChild.childNodes[i].childNodes[1].firstChild, Texto: miXML.firstChild.firstChild.childNodes[i].childNodes[2].firstChild, Fecha: miXML.firstChild.firstChild.childNodes[i].childNodes[3].firstChild, Foto: miXML.firstChild.firstChild.childNodes[i].childNodes[4].firstChild}); } //Asignamos al DataSet y al DataGrid datos.items = pelisGrid; datos.filtered = false; pelis_grid.dataProvider = datos.dataProvider; //Propiedades del DataGrid pelis_grid.removeColumnAt(pelis_grid.getColumnIndex("ID")); pelis_grid.removeColumnAt(pelis_grid.getColumnIndex("Texto")); pelis_grid.removeColumnAt(pelis_grid.getColumnIndex("Fecha")); pelis_grid.removeColumnAt(pelis_grid.getColumnIndex("Foto")); //Deshabilitamos ordenación de las columnas, pero no las columnas for (i=0; i<3; i++){ pelis_grid.getColumnAt(i).sortOnHeaderRelease = false; } } } miXML.load("mostraractualidad.php"); /**************************** EVENTOS *******************************/ recibir_lv.onLoad = function(){ //Vaciamos todo y recargamos el DataGrid con los datos modificados pelisGrid.splice(0, pelisGrid.length); datos.clear(); datos.filtered = false; pelis_grid.dataProvider = datos.dataProvider; _root.miXML.load("mostraractividad.php"); } // ORDENAMOS alOrdenar.headerRelease = function(objeto){ //Recogemos la ordenación actual miOrdenacion = datos.getIterator(); //Cogemos el nombre de la columna ordenarPor = objeto.target.getColumnAt(objeto.columnIndex).columnName; if (ordenarHacia == "asc"){ miOrdenacion.sortOn([ordenarPor], 1); ordenarHacia = "des"; } else if (ordenarHacia == "des"){ miOrdenacion.sortOn([ordenarPor], 2); ordenarHacia = "asc"; } //Aplicamos el nuevo orden datos.setIterator(miOrdenacion); } pelis_grid.addEventListener("headerRelease", alOrdenar); // FILTRAMOS alClicar.click = function(objeto){ if (objeto.target == filtrar_btn){ //Si no hay filtro lo ponemos y cambiamos el texto en el botón if (datos.filtered == false){ datos.filtered = true; datos.filterFunc(); filtrar_btn.label = "Quitar Filtro"; } //Si hay filtro lo quitamos y cambiamos el texto en el botón else if (datos.filtered == true){ datos.filtered = false; filtrar_btn.label = "Filtrar"; } //Función filterFunc de Flash datos.filterFunc = function(registro:Object) { var res_boo:Boolean = new Boolean(false); var act_str:String = new String(registro.Cabecera); var act_array:Array = new Array(); //Rompemos el string por palabras y lo metemos en un array act_array = act_str.split(" "); for (i=0; i<act_array.length; i++){ var t1_str:String = new String(act_array[i]); var t2_str:String = new String(filtrar_txt.text); if (t1_str.toUpperCase() == t2_str.toUpperCase()){ res_boo = true; } } return(res_boo == true); } } } filtrar_btn.addEventListener("click", alClicar); alSeleccionar.change = function(objeto){ if (objeto.target == pelis_grid){ selec_str = objeto.target.getItemAt(objeto.target.selectedIndex).Pelicula; id_txt.text = objeto.target.getItemAt(objeto.target.selectedIndex).ID; cabecera_txt.text = objeto.target.getItemAt(objeto.target.selectedIndex).Cabecera; texto_txt.text = objeto.target.getItemAt(objeto.target.selectedIndex).Texto; fecha_txt.text = objeto.target.getItemAt(objeto.target.selectedIndex).Fecha; foto_txt.text = objeto.target.getItemAt(objeto.target.selectedIndex).Foto; } } pelis_grid.addEventListener("change", alSeleccionar);