Ver Mensaje Individual
  #4 (permalink)  
Antiguo 01/09/2006, 03:51
miguel867
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 18 años
Puntos: 1
Hola,

Investigando en interenet sobre cellrenderer encontré algún ejemplo de datagrid con una columna de checkbox´s. Para ello hace falta una clase en un fichero .as correspondiente al componente checkbox que se quiere poner en la columna del datagrid. El problema es que todos los ejemplos que he encontrado rellenan el datagrid de forma estática (es decir, sin coger datos de ninguna Base de Datos), pero mi caso es el contrario: lo tengo que rellenar de forma dinámica.

El primer problema que tengo es que en la columna (la última) donde deberían aparecer los checkbox´s, no aparecen.

El código que tengo es el siguiente:

Clase que tengo en el fichero EleCheckBox.as :
Código PHP:
class EleCheckBox extends mx.core.UIComponent{
    
    var 
miCbox:MovieClip//Contenedor del checkBox
    
    //Constructor
    
function EleCheckBox(){
        
    }
    
    
//Con createChildren creamos el contenido para la celda, en este caso un
    //checkBox creada con createObject.
    
function createChildren():Void{
        
//createObject nos permite crear un objeto dentro de otro.
        
createObject("CheckBox""miCbox"1);
        
miCbox._visible false;
        
miCbox.addEventListener("click"_root.alClicar);
        
miCbox.size();
    }
    
    
//Ponemos el tamaño adecuado
    
function size():Void{
        
miCbox._width 100;
        
miCbox._height 22;
    }
    
    function 
setValue(suggested:Stringitem:Objectselected:Boolean):Void{
        
//Si el objeto tiene datos, lo mostramos y ponemos el texto correspondiente
        
if (item != undefined){
            
miCbox.label suggested;
            
miCbox._visible true;
            
miCbox.size();
        }
    }

En otro fichero .fla tengo un fotograma en el que se debe clicar un botón para que realice una búsqueda en la BD a través de la información seleccionada en dos combobox ("nombrecentro" y "horario") y un calendario ("dia"). Con los datos recuperados de la consulta se rellena bien el datagrid (incluso sale la cabecera de la columna "Asistencia"->donde deben aparecer los checkbox), pero no se muestran los checkbox´s en la última columna.

Código en el fichero .fla, asociado al botón "buscar":
Código PHP:
on (press)
{
    
import mx.controls.Alert;
    
Alert.buttonWidth 100;
    
    
dgreservas.removeAllColumns();
    
dgreservas.visible=true;
        
    
dgreservas.columnNames = ["Centro""Fecha""Hora""Puesto""Usuario""DNI""Asistencia"];
    
             
dgreservas.getColumnAt(0).width=85;
    
dgreservas.getColumnAt(1).width=75;
    
dgreservas.getColumnAt(2).width=60;
    
dgreservas.getColumnAt(3).width=60;
    
dgreservas.getColumnAt(4).width=155;
    
dgreservas.getColumnAt(5).width=75;
    
dgreservas.getColumnAt(6).width=75;
        
    
chbtodos=todos.selected//checbox para seleccionar busqueda por todos los nombres
    
nombrecentro=cmbnomcentro.text//combobox para seleccionar un nombre
    
dia=txtfecha.selectedDate//calendario para seleccionar una fecha
    
horario=cmbhora.text//combobox para seleccionar una hora

    
if ((nombrecentro=="Ninguno") && (chbtodos==false))
    {
        
Alert.show("Debe seleccionar un centro o todos""Atenció"Alert.OK);
    }

    
misvar=new LoadVars();
    
misvar.centro=nombrecentro;
    
misvar.fecha=dia;
    
misvar.hora=horario;
    
misvar.todoscentros=chbtodos;
    
    
misvar2=new LoadVars();
    
misvar.sendAndLoad("http://www.miurl.com/dgreservas.php",misvar2,"_POST"); // se envían los datos seleccionados para realizar la consulta

    
misvar2.onLoad=function()
    {
        
cadena=this.latabla;
        
cantidad=(this.cuantos)*6;
        
dividido=cadena.split(",");
    
        for (
i=0;i<=cantidad;i=i+6)
                    {
            
objeto = {Centrodividido[i],Fechadividido[i+1],Horadividido[i+2],Puestodividido[i+3],Usuariodividido[i+4], DNIdividido[i+5], Asistencia"Falta"};      
                         
dgreservas.addItem(objeto);         
                     }
        
    }

    var 
columna dgreservas.getColumnAt(6);
    
columna.cellRenderer "EleCheckBox";
    
    
    
//Listener para el evento click para las CheckBox
    
var alClicar:Object = new Object();
    
alClicar.click = function(objeto){
       
trace(objeto.target.selected);
    }
    
    
todos.selected=false;
    
cmbnomcentro.removeAll();
    
txtfecha.text=" ";
    
cmbhora.removeAll();
    

A ver si alguien me puede ayudar, porque estoy un poco perdido y no sé qué puedo probar.

Gracias y saludos!!!

Última edición por miguel867; 01/09/2006 a las 04:06