ugh,yeah, CheckBox implements  IDropInItemListRenderer (or whatever its
called exactly) and can do the edit your data thing.  Have you tried this?

DK

On Sat, May 24, 2008 at 2:25 PM, leds usop <[EMAIL PROTECTED]> wrote:

>   im just wondering why you think an ordinary check box wont retain it's
> selected state when scrolling? can you provide an example code that does
> that? maybe it will be more beneficial to approach the problem using that
> approach. Just a thought.
>
>
> --- On *Sun, 5/25/08, dbronk <[EMAIL PROTECTED]>* wrote:
>
> From: dbronk <[EMAIL PROTECTED]>
> Subject: [flexcoders] Why is this renderer so slow?
> To: flexcoders@yahoogroups.com
> Date: Sunday, May 25, 2008, 12:59 AM
>
> I have created a checkbox renderer. My datagrid has 5 out of 8
> columns that use it. The datagrid has only about 80 rows it it. When
> using this renderer the performance of the datagrid is horrible.
> Scrolling is extremely slow, click a checkbox is extremely slow. If I
> swap out and use a normal mx:CheckBox for the renderer the performance
> is just fine, but of course that doesn't work as it will not retain
> the state of the checkbox when scrolling. Here is my code for the
> renderer. I notice that many of these are re-executed whenever
> anything happens to the datagrid. That includes just mousing over.
>
> Thanks.
>
> Dale
>
> package renderer
> {
> import flash.events. MouseEvent;
>
> import mx.controls. CheckBox;
>
> import spectrumk12. minerva.util. BaseEvent;
> import spectrumk12. minerva.util. Utils;
>
> [Event(name= "selectionSet" , type="util.BaseEven t")]
> public class RendererCheckBoxXML extends CheckBox
> {
> private var _xmlItem : XML; //holds the current item xml node
> private var count:int=0;
> private var debug:String= "";
>
> /** The attribute in the xml to use to store the selected state of
> this checkbox. */
> [Inspectable( default=" rendererSelected ")]
> public var selectedAttribute : String = "rendererSelected" ;
>
> /** The default selection state (true/false) to give if the
> selectedAttribute is not there or null */
> [Inspectable( default=" false", enumeration= "true,false" )]
> public var defaultSelectedStat e : Boolean = false;
>
> public function RendererCheckBoxXML ()
> {
> super();
> trace("RendererChec kBoxXML:Construc tor");
> this.addEventListen er(MouseEvent. CLICK, onClick, false, 0, true);
> }
>
> // Sets the state of the checkbox based on the selectedAttribute
> attribute.
> override public function set data(oItem:Object) : void
> {
> _xmlItem = XML(oItem);
> trace("RendererChec kBoxXML:set data: " + [EMAIL PROTECTED]) ;
> var bSelected : Boolean = false;
> var attrSelected : String = [EMAIL PROTECTED] Attribute] ;
> this.selected = ( Utils.nullOrBlank( attrSelected) ?
> defaultSelectedStat e : (attrSelected == "true") );
> }
>
> override public function get data() : Object
> {
> trace("RendererChec kBoxXML:get data: " + (_xmlItem != null ?
> [EMAIL PROTECTED] : "null"));
> return _xmlItem;
> }
>
> /**
> * This overridden function is where the logic is for updating the xml.
> */
> override public function set selected(selectedFl ag:Boolean) : void
> {
> trace("RendererChec kBoxXML:set selected: " + [EMAIL PROTECTED]) ;
> super.selected = selectedFlag;
>
> // Only update the xml if it needs to be updated. Each time the xml
> // is updated it will fire any bindings to it so we want to keep these
> // to a minimum.
> if ( [EMAIL PROTECTED] Attribute] != selectedFlag )
> {
> // The selected flag is different than the selectedAttribute
> attribute.
> // Now we make one last check to see if the selectedFlag is false and
> // there is no attribute selectedAttribute. If this is the case, then
> // we do NOT update because having no attribute selectedAttribute will
> // default to a false. Again, we do this so that we update the xml as
> // infrequently as possible.
> if ( selectedFlag || [EMAIL PROTECTED] Attribute] .length() > 0 )
> {
> [EMAIL PROTECTED] Attribute] = String(this. selected) ; //set the
> checkbox state into the dataProvider
> }
> }
> dispatchEvent( new BaseEvent("selectio nSet", selectedFlag) );
> }
>
> // Called by click of the checkbox
> private function onClick(mouseEvent: MouseEvent) : void
> {
> trace("RendererChec kBoxXML:onClick: " + [EMAIL PROTECTED]) ;
> // Simply need to trigger the set selected function as that is
> where the logic for updating the xml is.
> this.selected = this.selected;
> }
>
> }
> }
>
>
>  
>



-- 
Douglas Knudsen
http://www.cubicleman.com
this is my signature, like it?

Reply via email to