Comunidad de diseño web y desarrollo en internet online

ItemRenderer y DataGrid

Citar            
MensajeEscrito el 16 Mar 2010 01:34 pm
Saludos,

El problema que tengo es con un datagrid y un itemrenderer, lo que sucede es que necesito tomar todos los componentes que fueron creados mediante itemrenderer dentro de ese datagrid y poder manipular el componente como tal.

Por cofla

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Mar 2010 09:19 pm
¿puedes detallarlo un poco más?

Por Hiedra91

12 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Mar 2010 09:28 pm
puedes poner el codigo que tienes porfa... y como estas haciendo el renderer

Por juramy

Claber

217 de clabLevel

2 tutoriales

 

Programador

msie8
Citar            
MensajeEscrito el 18 Mar 2010 11:15 pm
Hola amigos.

Lo que sucede es que yo realice un datagrid con varias comonentes creados mediante itemrenderer de la siguiente manera:

Código Flex :


 public var dpADG:ArrayCollection=new ArrayCollection([{Artist:"",Album:"",Price:""},{Artist:"",Album:"",Price:""}]);

<mx:DataGrid width="50%" height="50%"  allowMultipleSelection="true" 
        dataProvider="{dpADG}" id="adt" 
       editable="true"
       itemClick="clic(event)">
        <mx:columns>
            <mx:DataGridColumn dataField="Artist" id="c1" editable="true" rendererIsEditor="true">
               <mx:itemRenderer>
                   <mx:Component>
                     <mx:ComboBox>
                        <mx:ArrayCollection>
                        <mx:String>AK</mx:String>
                        <mx:String>AL</mx:String>
                        <mx:String>AR</mx:String>
                     </mx:ArrayCollection>
                     </mx:ComboBox>
                     </mx:Component>
               </mx:itemRenderer>
            </mx:DataGridColumn>
                 
            <mx:DataGridColumn dataField="Album" editable="true" rendererIsEditor="true" >
            <mx:itemRenderer>
                   <mx:Component>
                     <mx:ComboBox>
                        <mx:ArrayCollection>
                        <mx:String>AK2</mx:String>
                        <mx:String>AL2</mx:String>
                        <mx:String>AR2</mx:String>
                     </mx:ArrayCollection>
                     </mx:ComboBox>
                     </mx:Component>
               </mx:itemRenderer>
            </mx:DataGridColumn>
            <mx:DataGridColumn dataField="Price" editable="true" />
        </mx:columns>
   </mx:DataGrid> 


ahora yo necesito por ejemplo tomar el componente de la fila 0 columna 1, y manipularlo a mi antojo, es decir cambiarle el dataProvider o cosas de ese estilo, yo se realizar esto cuando se le de click a este item cuyo evento me arroja el itemRenderer de la celda, pero lo que yo necesito en realidad es una función del datagrid que me permita acceder a un componente en especial o que me arroje un array u una lista de todos los componentes que tiene el datagrid en cada una de sus celdas y manipularlos.
No se si esto sera posible, hasta el momento solo he logrado acceder a los componentes de la primera columna con la función.

var Obj:Object=adt.itemToItemRenderer(adt.selectedItem);

Pero con esto solo puedo hacer referencia al componente de la columna 1 del item seleccionado(adt.selectedItem).

Cuando hablo de componente me refiero a los combobox, checkbox.....

De ante mano les quedaría muy agradecidos si me pudieran ayudar.

Por cofla

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 20 Abr 2010 03:04 pm
Hola Compañeros,

Finalmente luego de buscar bastante y realizar varios ensayos encontré una forma de ingresar a los itemRenderer e itemEditor de cada celda de un datagrid.

Consta de un crear una clase que herede de DataGrid y adicionar un método que retorna en un array todos los itemrender e itemeditor del datagrid.

Código ActionScript :

package Scripts
{
  import mx.controls.DataGrid;
  import mx.controls.dataGridClasses.DataGridHeader;

  public class SuperDataGrid extends DataGrid
  {
    public function get listRendererArray():Array
    {
      return listItems;//retorna la lista de items del datagrid
    }
  }
}


y para acceder a los datos se hace de la siguiente forma:

Código ActionScript :

var rowRenderers:Array = ObjDtg.listRendererArray;
         var ObjCombo:Object=rowRenderers[row][ncol];
         
         for(var k:int=0; k<ObjCombo.dataProvider.length;k++ ){
            if(ObjCombo.dataProvider[k].id==valor){
               ObjCombo.selectedIndex=k;break;
            }
         } 


Donde ObjDtg es el id del datagrid, y ObjCombo es un comobobox que es mi caso estaba en la fila: row, y en la columna: col. como un itemrenderer.

Saludos,

Por cofla

1 de clabLevel



 

chrome

 

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