miércoles, 9 de junio de 2010

Como agregar columnas a un datagrid dinamicamente.

Como agregar columnas a un datagrid dinamicamente. March 5
ARCHIVADO EN FLEX, TUTORIALES POR OSCAR CORTES | 11 COMENTARIOS |

Este es un caso común cuando se quieren adicionar columnas dinamicamente a un datagrid. El caso de uso, puede que se tienen que agregar columnas a un datagrid de acuerdo a alguna selección del usuario. El código principal de cómo hacerlo este en la función agregarDataGridColumn de este ejemplo. Lo demás son componentes auxiliares para mostrar el ejemplo. En este caso, se presentan solo dos columnas por default en el datagrid de cinco disponibles. Las tres restantes pueden agregarse dinámicamente presionando un botón. Hasta donde puede llevarse este ejemplo? Bueno se me ocurren algunas ideas.

Por ejemplo:

- En vez de botones se pueden mostrar las columnas restantes en una lista. Y tal vez agregarlas con Drag&Drop?
- Validar que no se agregue la columna mas de dos veces.
- Adicionar itemRenderers dinámicamente.

Que otras ideas se les ocurren?


<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal"

verticalAlign="middle">



<mx:Script>

<![CDATA[

import mx.controls.dataGridClasses.DataGridColumn;

private function agregarDataGridColumn(dataField:String):void {

var dgColumna:DataGridColumn = new DataGridColumn(dataField);var columnas:Array = dataGrid.columns;

columnas.push(dgColumna);

dataGrid.columns = columnas;

}



]]>

</mx:Script>

<!-- Los datos. En este caso un Array de objetos-->

<mx:ArrayCollection id="datosArrayColl">

<mx:source>

<mx:Array>

<mx:Object nombre="Ryan" apellido="Stewart" calle="adobe" pais="us" departamento="IT"/>

<mx:Object nombre="Steve" apellido="Jobs" calle="apple" pais="us" departamento="IT"/>

<mx:Object nombre="Bill" apellido="Gates" calle="microsoft" pais="us" departamento="IT"/>

<mx:Object nombre="Britney" apellido="Spears" calle="ninguna" pais="us" departamento="espectaculos"/>

<mx:Object nombre="Jessica" apellido="Simpsoms" calle="smith" pais="us" departamento="cine"/>

<mx:Object nombre="Barack" apellido="Obama" calle="president st." pais="us" departamento="politica"/>

</mx:Array>

</mx:source>

</mx:ArrayCollection>





<mx:DataGrid id="dataGrid"

dataProvider="{datosArrayColl}"width="

400" rowCount="6">

<mx:columns>

<mx:DataGridColumn dataField="nombre" />

<mx:DataGridColumn dataField="apellido" />

</mx:columns>

</mx:DataGrid>



<mx:VBox >

<mx:Button label="Agregar Calle" click="agregarDataGridColumn('calle')" />

<mx:Button label="Agregar Pais" click="agregarDataGridColumn('pais')" />

<mx:Button label="Agregar Departamento" click="agregarDataGridColumn('departamento')" />

</mx:VBox>



</mx:Application>


Fte: http://www.holaflex.com/?p=64

No hay comentarios:

Publicar un comentario