Hola,
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);