the class has a bunch of other stuff in it too (we needed some further
display customization), but it's pretty straightforward. The
updateDisplayOfItemRenderer method was overriden like so:

override protected function
updateDisplayOfItemRenderer(r:IListItemRenderer):void
        {
            if (r is IInvalidating)
            {
                var ui:IInvalidating = IInvalidating(r);
                ui.invalidateDisplayList();
               //dear Flex team in India: I hate you.
               // ui.validateNow();
            }
        }

and then I copied/pasted the entire drawCellItem() method and commented out
the call to validateNow() that occurs in the lower part of that function.
Give that a whirl and let me know if it helps with performance.

Doug

On Thu, Sep 4, 2008 at 8:46 AM, Adrian Williams
<[EMAIL PROTECTED]>wrote:

>    Hi Doug,
>
>     This makes sense.  It's staggering that the validateNow() is being
> called basically on every cell....
>
>     In hope of avoiding recreating the wheel, would you be willing to share
> your extended code with me so I can give it a whirl and see if it remedies
> the problem?
>
> Thanks!
> Adrian
>
> Doug McCune wrote:
>
>  There are a few places within the ADG code where the code loops over
> every single item renderer and needlessly (or at least excessively) calls
> validateNow() on each renderer. That forces the renderers to each relayout
> and draw themselves and does not allow the delayed layout processing that
> the framework is supposed to allow.
>
> See the updateDisplayOfItemRenderer() method in AdvancedDataGridBase and
> you'll find this function:
> protected function updateDisplayOfItemRenderer(r:IListItemRenderer):void
>     {
>         if (r is IInvalidating)
>         {
>             var ui:IInvalidating = IInvalidating(r);
>             ui.invalidateDisplayList();
>             ui.validateNow();
>         }
>     }
>
> that gets run waaay too often.
>
> Also see the drawCellItem() method of AdvancedDataGrid, which down at the
> bottom of the method has this call:
>
> if (item is IFlexDisplayObject)
>         {
>             if (item is IInvalidating)
>             {
>                 IInvalidating(item).invalidateDisplayList();
>                 IInvalidating(item).validateNow();
>             }
>         }
>
> So basically every time your data grid is redrawing itself it takes way
> longer than it should. I created an extended version of ADG and overrode
> those two methods (had to copy/paste most of the drawCellItem method) and I
> removed the calls to validateNow, seemed to speed things up a lot.
>
> Doug
>
> On Thu, Sep 4, 2008 at 8:06 AM, Adrian Williams <[EMAIL PROTECTED]
> > wrote:
>
>>   All,
>>
>>     I am seeing some incredible lag while using a couple of simple panels
>> and a complex ADG.  While I love the flexibility and power of Flex/AS and
>> the ADG,  I really need to overcome these performance problems or the
>> project will sink.
>>
>>     My ADG has approx. 100 columns with approx. 200 rows, in a grouping
>> collection that contains approx 30 groups.
>>
>>     I suspect the lag I am seeing has to do with the redrawing of the
>> rows.  Whenever I scroll or collapse/expand the nodes, it takes between 1/2
>> to 1 second for the action to complete.  And this isn't even a very large
>> dataset...we have some that have a few thousand rows. I haven't used any
>> item rendering (yet) that would slow the speed down, though I have two
>> columns that have style functions attached. All in all, this is about as
>> close to display the raw data as I can get.
>>
>>     I have spent some time with the profiler and performance monitor and
>> it appears the the code is sound and without memory leaks.  I have also gone
>> thru to refactor poorly designed code and remove unnecessary nestings.
>>
>>     So my initial questions with this admittedly somewhat vague problem
>> are:
>>
>>     1.)  Is there a way to turn off the animations and would doing so help
>> with the speed?
>>     2.)  Has anyone else faced this same dilemma and how did you overcome
>> the problems?
>>
>> Thanks,
>> Adrian
>>
>>
>    
>

Reply via email to