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 >> >> > >