CheckBox DataGrid ItemRenderer en flex 4 con valores String

La funcionalidad de Flash Builder de crear itemRenderers al vuelo es algo que los desarrolladores de Flex hemos recibido con muchísimo agrado, hacerlo antes era un proceso más bien engorroso.

Este es un ejemplo de algo que se puede lograr en muy poco tiempo pero que demoré en encontrar debido sobre todo a que es una funcionalidad muy poco común, pero en realidad es muy fácil de hacer y se aplica a muchos otros casos.
Sin mucho preámbulo, al grano:

<?xml version="1.0" encoding="utf-8"?>
<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
focusEnabled="true">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
public function get Approved():String
{
return estadoAprobado.selected ? 'T' : 'F';
}
public function set Approved(value:String):void
{
estadoAprobado.selected = value == 'T' ? true : false;
}
]]>
</fx:Script>
<s:CheckBox id="estadoAprobado" verticalCenter="0" horizontalCenter="0"/>
</s:MXDataGridItemRenderer> 

Y con esto, simplemente tenemos un itemRenderer para un datagrid con un checkbox adentro que evalúa si el valor es “T” o “F” en vez de usar valores boolean, usarlo en una columna de un datagrid es tan simple como:

 <mx:DataGridColumn headerText="Aprobado" dataField="Approved" width="100" textAlign="center" itemRenderer="renderers.CheckBoxRenderer" rendererIsEditor="true" editorDataField="Approved"/> 

En este caso, el nombre del campo que viene en el ArrayCollection y que es evaluado, es “Approved.

Advertisement

, , ,

  1. Dejar un comentario

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.