Foros del Web » Creando para Internet » Flash y Actionscript »

datagrid con checkbox

Estas en el tema de datagrid con checkbox en el foro de Flash y Actionscript en Foros del Web. Hola de nuevo amigos, Tengo un datagrid que se rellena mediante datos de mi BD. La cuestión es que necesito añadirle una nueva columna en ...
  #1 (permalink)  
Antiguo 29/08/2006, 03:32
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 18 años
Puntos: 1
datagrid con checkbox

Hola de nuevo amigos,

Tengo un datagrid que se rellena mediante datos de mi BD. La cuestión es que necesito añadirle una nueva columna en la que haya un checkbox y ésto se debe generar dinámicamente al cargar el datagrid. He buscado por todos los sitios ya que hay gente con la misma duda pero no consigo encontrar nada.

Había intentado generar el checkbox con el método attachMovie de la siguiente forma, pero no sé si es correcto:
Código PHP:
dividido=cadena.split(",");
    
for (
i=0;i<=cantidad;i=i+5)
{
   
objeto = {Centrodividido[i],Fechadividido[i+1],Horadividido[i+2],Puestodividido[i+3],Usuariodividido[i+4], PresenteattachMovie("CheckBox""chb"1)};      

   
dgreservas.addItem(objeto);         

El datagrid se carga bien pero el checkbox no consigo sacarlo. Alguien me puede ayudar para insertar los checkbox en el datagrid??. He añadido el componente checkbox a la biblioteca.

Una vez consiga esto, tengo que recorrer los checkbox del datagrid para saber cuáles están seleccionados. Pero eso ya vendrá después; símplemente lo comento para aportar más información.

Gracias y saludos!!!

Última edición por miguel867; 29/08/2006 a las 03:42
  #2 (permalink)  
Antiguo 29/08/2006, 09:46
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 17 años, 8 meses
Puntos: 0
Para eso busca lo que se llama CELLRENDERER en el data grid, con ello puedes insertar celdas multilinea, imágenes, checkbox etc.

Pero ten en cuenta una cosa, no hay forma de captural el evento CHECK en el checkbox, asi que siempre deberas validar con un boton o una funcion
// si no entendiste este parrafo no hagas caso
  #3 (permalink)  
Antiguo 30/08/2006, 00:20
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 18 años
Puntos: 1
Gracias seyacat,

Me informaré y a ver si consigo algo.

Saludos!!!
  #4 (permalink)  
Antiguo 01/09/2006, 03:51
 
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
  #5 (permalink)  
Antiguo 01/09/2006, 11:05
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 18 años
Puntos: 1
Alguien me puede ayudar?

Estoy un poco perdido y no sé qué fer. Please.

Gracias.

Última edición por miguel867; 04/09/2006 a las 08:08
  #6 (permalink)  
Antiguo 08/09/2006, 09:43
AME
 
Fecha de Ingreso: julio-2006
Mensajes: 71
Antigüedad: 17 años, 9 meses
Puntos: 0
Sonrisa como puedo desarrollar un data grit

hola que tal a todos he leido este foro y esta muy interesante, ya que necesito crear todo lo que ustedes han mencionado y no se como empezar necesito lo que miguel yant a hecho en el data para ver mas o menos ocmo puedo desarrollar.

en este caso no conozco nada de flash
  #7 (permalink)  
Antiguo 08/09/2006, 16:19
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 17 años, 8 meses
Puntos: 0
Yo tengo una app hecha con cellrenderer y un chechbox

lo mas simple para llenarlos de forma dinamica es que te soportes con un Dataset

Ingresar datos en el dataset es muy sencillo, y el grid tarabaja solo

Saludos X.
  #8 (permalink)  
Antiguo 10/09/2006, 08:43
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 18 años
Puntos: 1
Puedes poner un enlace donde haya ejemplos del DataSet, o un tutorial o algo asi?.

Saludos!!!
  #9 (permalink)  
Antiguo 11/09/2006, 02:56
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 17 años, 8 meses
Puntos: 0
MMM sabes que no recuerdo tutorial, lo que si se es que para vincular el dataset con el datagrid solamente usas el COMPONENT INSPECTOR.

y luego para llenar los datos basta buscar DATASET en la propia ayuda del flash y tienes los ejemplos exactos.
  #10 (permalink)  
Antiguo 11/09/2006, 03:06
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 18 años
Puntos: 1
qué es eso del COMPONENT INSPECTOR ?? No lo he oído nunca. Sabes de algún ejemplo de vinculación del dataset en el datagrid?

Saludos!!!
  #11 (permalink)  
Antiguo 12/09/2006, 11:10
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 18 años
Puntos: 1
Alguien me puede ayudar? cualquier idea que tengais es buena.... gracias y saludos!!!!
  #12 (permalink)  
Antiguo 12/09/2006, 11:15
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 17 años, 8 meses
Puntos: 0
ya te hago un ejemplo
  #13 (permalink)  
Antiguo 12/09/2006, 11:32
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 18 años
Puntos: 1
gracias seyacat... estaré esperando para ver si de una vez consigo solucionar el problema

saludos amigo!!!
  #14 (permalink)  
Antiguo 12/09/2006, 12:15
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 17 años, 8 meses
Puntos: 0
http://www.seyanim.com/pruebas/prueba.rar
  #15 (permalink)  
Antiguo 12/09/2006, 12:16
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 17 años, 8 meses
Puntos: 0
hubo una cosa que solucione escuetamente... ya que yo tambien me quede con dudas de porque no aplica el cellrenderer despues de ingresasr los datos, es como que hubiera un delay y no actualiza siguiendo la programacion, solo funciona con un enterframe.

BANDIT!!!!!!! JAJA

pero fijate, en el component inspector en bidding, ahi esta el secreto
  #16 (permalink)  
Antiguo 12/09/2006, 14:50
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 18 años
Puntos: 1
Gracias por las molestias seyacat, he probado el swf y parece que me serviría. Pero me he llevado una sorpresa al intentar abrir el arxivo .fla, ya que me dice "Formato de archivo inesperado". Creo que es debido a mi version de macromedia flash que tengo instalada ya que me ha aparecido en otras ocasiones. Tengo el macromedia flash mx 2004, tú en qué versión has creado el fichero? Es la misma?

hay alguna manera de poder abrir el fichero sin tener que ponerme una versión posterior de flash..... en el supuesto caso de haberlo creado tu en una posterior a la mia?

Espero no molestarte mucho....... gracias amigo!!! si consigo abrirlo ya abré adelantado mucho.....jeje

Saludos!!!
  #17 (permalink)  
Antiguo 12/09/2006, 20:38
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 17 años, 8 meses
Puntos: 0
a si lo hice en flash 8... lo tengo en la oficina. Mañana temprano te lo paso al MX. Que descuido lo lamento
  #18 (permalink)  
Antiguo 13/09/2006, 02:42
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 18 años
Puntos: 1
Gracias seyacat!!! esperaré a que me pongas el enlace con el archivo de la version mx 2004 ok? ..... creo que me servirá perfectamente ...... a ver si consigo acabarlo.

Saludos amigo!!!
  #19 (permalink)  
Antiguo 13/09/2006, 15:52
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 17 años, 8 meses
Puntos: 0
Esta listo en la misma url
  #20 (permalink)  
Antiguo 14/09/2006, 00:39
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 18 años
Puntos: 1
gracias seyacat ya lo he podido ver!!! .... voy a probarlo... mi duda ahora es si tendré que hacer algo para que el dataset me pille los datos que recupero de mi BD .... voy a ver si lo consigo de una vez.

Saludos amigo!!!
  #21 (permalink)  
Antiguo 14/09/2006, 06:49
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 17 años, 8 meses
Puntos: 0
Para capturar los datos solamente debes ingresarlos como esta en la segunda o tercer linea del actionscript frame 1

Dataset.addItem(....);
  #22 (permalink)  
Antiguo 15/09/2006, 06:32
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 18 años
Puntos: 1
Gracias seyacat..... lo he probado xo no sé qué pasa que no carga en el datagrid los datos de la consulta que hago ... antes sí que los cargaba ..... y está exactamente igual que el que me has pasado....... al final no sé cómo lo haré ....... jeje

si quieres que te pase el .fla me lo dices aunque es que no sé ni qué puedo probar ya.

saludos y gracias por todo ... eres un colega!!!
  #23 (permalink)  
Antiguo 15/09/2006, 09:42
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 17 años, 8 meses
Puntos: 0
pasa el fla

seyacat(at)seyanim.com
  #24 (permalink)  
Antiguo 15/09/2006, 11:15
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 18 años
Puntos: 1
vale,

te lo envio esta noche o el sabado por la mañana para que me dé tiempo a ponerte comentarios y así kitarte trabajo a la hora de entender código.... de todas formas gracias por las molestias.

saludos!!!
  #25 (permalink)  
Antiguo 16/09/2006, 04:41
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 18 años
Puntos: 1
Hola seyacat,

Te acabo de enviar el correo, si no te ha llegado bien me lo dices y te lo vuelvo a enviar.

Te he enviado el .rar con el fichero .fla y la clase del checkbox que ya me pusiste en tu enlace de la web.

Te he quitado el código que no hace falta y he puesto comentarios.

Si tienes alguna duda o quieres contestarme cuando lo leas me dices algo por el foro o a mi correo.

Esperaré tu respuesta.

Gracias compañero, saludos!!!
  #26 (permalink)  
Antiguo 17/09/2006, 05:35
 
Fecha de Ingreso: abril-2006
Mensajes: 131
Antigüedad: 18 años
Puntos: 1
gracias por leer el correo seyacat .... ya veremos qué puedo hacer.

saludos y gracias por las molestias!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:47.