Comunidad de diseño web y desarrollo en internet online

DataGrid + ComboBox

Citar            
MensajeEscrito el 12 Ago 2004 02:51 am
Bueno...ya me he matado el coco durante horas y nada:
Tengo un DataGrid, al cual le adjunto n ComboBox en una Columna....el problema es que deben interactuar uno a uno con otros combos creados en una segunda columna.

Es decir, selecciono una opción en un combo de la izquierda, y el combo que está al frente deberá cambiar según lo que seleccioné

Lo tengo solucionado para n combos...pero sin el DataGrid, y necesito meterlos en el DataGrid ! ! !.

debe quedar así:

http://mexsite.net/gersonm/lab/combogrid/combo1.JPG

Pero cuando intento meter al grid...se ve así:

http://mexsite.net/gersonm/lab/combogrid/combo2.JPG


Las rayas las hice con el Paint jejej....

Bueno....ojalá logren hallarle el truco, porque no lo veo trivial...voya despejar mi mente.

Gracias.

El code base que utilicé se encuentra en:

http://www.flash-db.com/Tutorials/cellrenderer/CellRenderer.php

Por gersonm

Claber

2238 de clabLevel

12 tutoriales
1 articulo
5 ejemplos

Genero:Masculino   Desarrollador de GAIA

Al otro lado de la mira

unknown
Citar            
MensajeEscrito el 12 Ago 2004 09:39 am
Uissshhh... pos no se, lo que intentas hacer es un poco rarillo, jeje, pero bueno cada uno con lo suyo :roll:

Si se te están duplicando los valores quizá sea porque no estás utilizando bien el DataProvider, o tienes el mismo, o estás metiéndole datos en algún momento sin querer.

En caso de que no uses DataProvider... úsalo!!

Pon una descarga a tu .FLA para ver el código tuyo y probar cositas, jeje.


A ver si te va eso... :wink:

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

unknown
Citar            
MensajeEscrito el 12 Ago 2004 01:08 pm
La única medio pista es que según el ejemplo (del cual di enlace), cuando se utiliza el dataProvider, se hace asignándolo al Grid....y creo que es por eso, al fin y al cabo lo que se debe hacer es asignarle los datos al DataProvider pero de los combos.....la idea es muy sencilla, no sé por qué esos componentes la complican tanto.

Por el code no tendría sentido enviar uno, al fin y al cabo, en la pg que di está el ejemplo que utilicé.

Gracias.

Por gersonm

Claber

2238 de clabLevel

12 tutoriales
1 articulo
5 ejemplos

Genero:Masculino   Desarrollador de GAIA

Al otro lado de la mira

unknown
Citar            
MensajeEscrito el 12 Ago 2004 02:01 pm
recuerdo que el combobox cellrenderer (sobre el cual tengo q trabajar en unos dias) de flash-db lo q hace es ordenar siempre el dataprovider del combo, para poder actualizar la vista del item seleccionado.

segun entiendo, para q al seleccionar un item se cambie el de otra columna,se deberia modificar la funcion change del cellrenderer:

Código :

 function change(objEvent) { 
//...
} 

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

unknown
Citar            
MensajeEscrito el 12 Ago 2004 02:05 pm
Sip...eso lo entiendo (con esa función sé a cuál combo le di clic y cuál elemento seleccioné), pero entonces el gran problema es cómo creo los otros combos (en este caso vacíos) en la nueva columna, si el DataGrid es quien crea los combos con la información del data_array ...

Estoy intentando controlar los combos por separador....gracias...ojalá entre todos podamos resolver este dilema.

Por gersonm

Claber

2238 de clabLevel

12 tutoriales
1 articulo
5 ejemplos

Genero:Masculino   Desarrollador de GAIA

Al otro lado de la mira

unknown
Citar            
MensajeEscrito el 12 Ago 2004 02:30 pm
ah los combos no estan inicializados en el dataProvider?

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

unknown
Citar            
MensajeEscrito el 12 Ago 2004 02:34 pm
bueno en ese caso empezemos a intentar, yo diria q seria algo asi como:

function change(objEvent) {
listOwner.dataProvider.editField(getCellIndex().itemIndex, getDataLabel(), reorder(combo.dataProvider, combo.selectedIndex));
}

asi es originalmente, yo cambiaria los paarmetros de editfield para q:

-indicaran la columna q se va a editar
-en vez de llamar a reorder llamara a una nueva funcion q obtuviera el dataProvider del combobox

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

unknown
Citar            
MensajeEscrito el 12 Ago 2004 02:35 pm
Sip...pero no el propio.

El dataProvider se le asigna al DataGrid, y por medio del ComboBoxCellRenderer, se crean y asignan los datos a loc Combos.

Por gersonm

Claber

2238 de clabLevel

12 tutoriales
1 articulo
5 ejemplos

Genero:Masculino   Desarrollador de GAIA

Al otro lado de la mira

unknown
Citar            
MensajeEscrito el 12 Ago 2004 03:31 pm
aja , lo q habria q hacer es agregar otra linea a la funcion change... una q tambien reordene el combo de la columna deseada!

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

unknown
Citar            
MensajeEscrito el 12 Ago 2004 03:36 pm
pues desde el change puedo cambiar los valores de un combo...sin necesidad de ordenar, pues he probado cambiar un combo fuera del grid desde el que está en el grid (valga la redundancia) y perfecto...(la verdad aún no entiendo porqué no dejan al combo trabajar por su cuenta usando ese reorden !)...la cuestión se reduce ahora a que necesito introducir nuevos combos vacíos en la columna que está al frente de los combos que ya tengo armados...

Deberíamos como armar una sola web para este caso jejeje ...

Por gersonm

Claber

2238 de clabLevel

12 tutoriales
1 articulo
5 ejemplos

Genero:Masculino   Desarrollador de GAIA

Al otro lado de la mira

unknown
Citar            
MensajeEscrito el 12 Ago 2004 04:42 pm
si, yo hace + o - un mes estuve tratando de quitar la funcion reorder, y luego de 1 dia tratando me di cuenta q es la unica solucion, ya que cada vez que se hace rollover al datagrid o se hace scroll, lo q sea, el dg se actualiza y muestra el primer item del combo, asi q nada q hacer.

pero me refiero al evento change no del datagrid sino del cellrenderer...

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

unknown
Citar            
MensajeEscrito el 12 Ago 2004 05:11 pm
hhmm....hay si me perdí...el único cellRenderer que veo es el asignado a las columnas...y pues hace referencia a la clase en donde se encuentra el change del reorden....

Por gersonm

Claber

2238 de clabLevel

12 tutoriales
1 articulo
5 ejemplos

Genero:Masculino   Desarrollador de GAIA

Al otro lado de la mira

unknown
Citar            
MensajeEscrito el 12 Ago 2004 05:25 pm
exactamente, hay q modificar esa clase!

yo tengo esta:

Código :

import mx.core.UIComponent; 
import mx.controls.ComboBox; 
class ComboBoxCellRenderer extends UIComponent { 
   var combo:MovieClip; 
   var listOwner:MovieClip; 
   var getCellIndex:Function; 
   var getDataLabel:Function; 
   function ComboBoxCellRenderer() { 
   } 
   function createChildren(Void):Void { 
      //Creates a ComboBox object and listen to changes 
      combo = createObject("ComboBox", "Combo", 2, {styleName:this, owner:this}); 
      combo.addEventListener("change", this); 
      combo.addEventListener("open", this); 
      size(); 
   } 
   // note that setSize is implemented by UIComponent and calls size(), after setting 
   // __width and __height 
   function size(Void):Void { 
      combo.setSize(__width-10, __height); 
      combo._x = 0; 
      combo._y = 0; 
   } 
   function setValue(str:Array, item:Object, sel:Boolean):Void { 
      combo._visible = (item != undefined); 
      combo.dataProvider = str; 
   } 
   function getPreferredHeight(Void):Number { 
      return 30; 
   } 
   function getPreferredWidth(Void):Number { 
      return combo.__height; 
   } 
   // This re-build the dataProvider, the selected item 
   // as the first in the array 
   function reorder(datos:Array, choice:Number):Array { 
      var value = datos.splice(choice,1)[0] 
      datos.unshift(value) 
      return datos 
   } 
   function change(objEvent) { 
      //listOwner.dataProvider[getCellIndex().itemIndex][getDataLabel()] = reorder(combo.dataProvider, combo.selectedIndex); 
      listOwner.dataProvider.editField(getCellIndex().itemIndex, getDataLabel(), reorder(combo.dataProvider, combo.selectedIndex)); 
   } 
 /*   
    function open(){ 
      listOwner.selectedIndex = getCellIndex().itemIndex 
      listOwner.dispatchEvent({ type:"cellPress"}); 
   }*/ 
} 

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

unknown
Citar            
MensajeEscrito el 12 Ago 2004 05:27 pm
ok...la estudiaré más tarde...voy a ir almorzar y estoy ya muy cansado.

Muchas gracias _david

Por gersonm

Claber

2238 de clabLevel

12 tutoriales
1 articulo
5 ejemplos

Genero:Masculino   Desarrollador de GAIA

Al otro lado de la mira

unknown
Citar            
MensajeEscrito el 12 Ago 2004 07:38 pm
Solo por si acaso ... porque lo que dijo _DAVID es muy bueno. ya viste este tuto?
http://www.cristalab.com/vertutorial.php?id=46

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

unknown
Citar            
MensajeEscrito el 12 Ago 2004 08:24 pm
Si F, ya lo vi, pero eso no me sirve...es muy básico porque solo trata de llenar el grid con daticos...yo lo que necesito es llenarlo con componentes....cada columna...por ejemplo,

la primera columna tiene Labels
la segunda tiene combos
la tercera tiene combos (que interactúan con la primera)
la cuarta tiene inputs
...
...
la n-ésima tiene más labels

Me entienden ?

Por gersonm

Claber

2238 de clabLevel

12 tutoriales
1 articulo
5 ejemplos

Genero:Masculino   Desarrollador de GAIA

Al otro lado de la mira

unknown
Citar            
MensajeEscrito el 13 Ago 2004 01:08 pm
bueno como va eso?

a proposito, con el flash mx 2004 viene el checkbox cellrenderer...

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

unknown
Citar            
MensajeEscrito el 13 Ago 2004 01:47 pm
pues por el momento tocó dejarlo sin el grid, pero igual, para el lunes debo tener eso...no sé cómo :crap:

Voy a jugar en mi casa con esa vaina....les agradezco cualquier ayuda.

Por gersonm

Claber

2238 de clabLevel

12 tutoriales
1 articulo
5 ejemplos

Genero:Masculino   Desarrollador de GAIA

Al otro lado de la mira

unknown
Citar            
MensajeEscrito el 13 Ago 2004 02:08 pm
yo esmiezo hoy a trabajar con un DataGrid con ComboBox...pero se q la clave para hacer lo q dijimos es usar ese evento (change)

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

unknown
Citar            
MensajeEscrito el 13 Ago 2004 02:30 pm
..hhmm...pues no sé...para mi la clave es poder introducir combos en una columna totalmente independientes de los de la primera.

Como sabrás, es al dataGrid al que uno le define los datos....desde ese momento es el dataGrid quien manda y hace lo suyo.

Lo ideal sería lograr manipular los datos de los combos de manera independiente, no crees ?

Por gersonm

Claber

2238 de clabLevel

12 tutoriales
1 articulo
5 ejemplos

Genero:Masculino   Desarrollador de GAIA

Al otro lado de la mira

unknown
Citar            
MensajeEscrito el 13 Ago 2004 03:25 pm
si, lo pasa es que el metodo editField modifica el dataProvider del DataGrid. Y se activa cuando se hace una seleccion de combo (llamando a reorder, para q el item seleccionado sea el primero del combo). Asi q se puede ahi mismo hacer un llamado a editField (ya se tiene la fila, se le daria la columna q se quiera actualizar) y pasar como parametro una funcion q retorne el dataProvider del combo de esa otra columna (facil no? :shock: ).

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

unknown

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.