flex - Value in Datagrid itemrenderers set data method doesn't return the correct data -
flex - Value in Datagrid itemrenderers set data method doesn't return the correct data -
i've got gridcolumn in datagrid (spark). column's dataprovider number value gets updated via binding.
now, without item renderer cell displays right values. if set item renderer, can't access values in renderer.
my renderer looks this, nil here (for now) trace value, value nan.
<?xml version="1.0" encoding="utf-8"?> <s:griditemrenderer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" width="100%" height="100%" > <fx:script> <![cdata[ override public function set data(value:object):void { trace(number(value)); } ]]> </fx:script> </s:griditemrenderer>
i don't understand why happens, insight much appreciated! again, without renderer, column displays right values, apparently defaultgriditemrenderer works fine.
as requested, here datagrid;
<s:datagrid id="datagrid" dataprovider="{_listitems}"> <s:columns> <s:arraylist> <s:gridcolumn datafield="change" headertext="change" itemrenderer="myitemrenderer" /> ... </s:datagrid>
_listitems arraylist instances of model class, has (amongst others) property called alter of type number.
do this:
[bindable] private var simpledataprovider:arraycollection = new arraycollection([{first: "this", second: "is", third:"test", fourth:"data"}, {first:"not", second:"full", third: "row"}]);
datagrid:
<s:datagrid id="dg" dataprovider="{simpledataprovider}"> <s:columns> <s:arraycollection> <s:gridcolumn datafield="first"/> <s:gridcolumn itemrenderer="group.testrenderer3"/> <s:gridcolumn datafield="third"/> <s:gridcolumn datafield="fourth"/> </s:arraycollection> </s:columns> </s:datagrid>
and item renderer:
<?xml version="1.0" encoding="utf-8"?> <s:griditemrenderer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" clipandenablescrolling="true"> <fx:script> <![cdata[ override public function set data(value:object):void { lbldata.text = value.second; } ]]> </fx:script> <s:label id="lbldata" top="9" left="7"/> </s:griditemrenderer>
most of import thing value.second
in case should value.change
flex datagrid itemrenderer
Comments
Post a Comment