Hey Alex, I haven't had time to create an example of the behavior I
was talking about but I can show you the example that started me on
the path to overriding .data. 

http://www.jessewarden.com/archives/2006/10/checkbox_item_r.html

Hopefully work will calm down soon and I can try to reproduce some of
the odd behavior I saw during some of my early experiments. Also, I
think the approach I used in the post referenced earlier (binding the
header renderer to a property held outside the datagrid/dataprovider)
is a pretty simple way to ensure consistent behavior.

Additionally, I would still love to get more info about the abundance
of events that headerRenderers seem to receive/the reinitialization
you mentioned if you or anyone else can provide it.

Thanks,
Ben


--- In [email protected], "Alex Harui" <[EMAIL PROTECTED]> wrote:
>
> Did you solve this yet?
>  
> HeaderRenderers are a bit trickier.  Their .data is a DataGridColumn,
> and existing controls like CheckBox are set up to be itemRenderers, but
> not headerRenderers.
>  
> However, I got one working.  The key thing was to block the sort event.
> Another note is that the headerRenderer may get killed off and
> re-created so you may need to set its selected property on
> initialization.
>  
> I block the sort event like this:
>  
> // constructor
>  
> DataGrid(listData.owner).addEventListener(DataGridEvent.HEADER_RELEASE,
> sortEventHandler);
> 
>  private function sortEventHandler(event:DataGridEvent):void
>  {
>   if (event.itemRenderer == this)
>    event.preventDefault();
>  }
> 
> 
> ________________________________
> 
> From: [email protected]
> [mailto:[EMAIL PROTECTED] On Behalf Of Douglas Knudsen
> Sent: Saturday, March 24, 2007 12:14 PM
> To: [email protected]
> Subject: Re: [flexcomponents] Re: datagrid header with checkbox
> 
> 
> 
> when creating a custom header renderer, what is in the data property?
> Can things be added?  how?  
> I tried using data.headerText but got nothing.  
> 
> Ben, thanks for your notes for sure.  Creating a itemRender for a DG is
> not so painful really.  Creating the headerRenderer is where things
> don't seem the same approach. 
> 
> DK
> 
> 
> On 23 Mar 2007 20:54:08 -0700, ben.clinkinbeard
> <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > wrote:
> 
> 
>       Hi Alex,
>       
>       Re-reading it now, I see that my sentence about the data setter
> isn't
>       very clear. I suppose its not a case of 'must' or 'always', but
> any
>       time I've created or seen renderers that use a control of some
> sort to
>       represent a piece of data, overriding the data setter is
> necessary to
>       ensure consistent results when scrolling. I was thinking mostly
> of
>       CheckBox renderers in DataGrids since thats what I've
> encountered most
>       often, but I would venture to guess that it holds true for other
>       controls like ComboBox, Label, etc in things like Lists as well
> as
>       DataGrids.
>       
>       For whatever reason, the list-based controls don't seem to be
> able to
>       re-apply proper values/states on the itemRenderers when the
> scrolling
>       initiates the recycling of displayed items. That is, since it
> reuses
>       the same graphical assets and simply swaps the data for each
> item when
>       the list is scrolled, binding the control to a value isn't
> enough to
>       keep checked items checked, and unchecked items unchecked.
>       
>       If I am just dense and have missed an easier way to do things I
> would
>       certainly appreciate any advice you can provide. Also, if need
> be I
>       can try to throw together a quick example to demonstrate the
> erratic
>       behavior I described.
>       
>       Thanks,
>       Ben
> 
>       
>       
>       --- In [email protected]
> <mailto:flexcomponents%40yahoogroups.com> , "Alex Harui" <aharui@>
> wrote:
>       >
>       > Ben, I'm not aware of a rule that you must override the .data
> setter.
>       > Can you explain further?
>       > 
>       > 
>       > 
>       > -Alex
>       > 
>       > 
>       > 
>       > ________________________________
>       > 
>       > From: [email protected]
> <mailto:flexcomponents%40yahoogroups.com> 
>       > [mailto:[email protected]
> <mailto:flexcomponents%40yahoogroups.com> ] On Behalf Of
> ben.clinkinbeard
>       > Sent: Friday, March 23, 2007 5:48 PM
>       > To: [email protected]
> <mailto:flexcomponents%40yahoogroups.com> 
>       > Subject: [flexcomponents] Re: datagrid header with checkbox
>       > 
>       > 
>       > 
>       > Hi Douglas,
>       > 
>       > If you look in the docs, you'll see that itemRenderers (and
>       > itemEditors) are the primary use cases for ClassFactory. In
> fact, when
>       > you say something like <mx:List id="myList"
>       > itemRenderer="ProductRenderer">, the compiler actually creates
> a
>       > ClassFactory instance for you behind the scenes. Explicitly
> creating
>       > the ClassFactory instance simply allows you to use the
> properties
>       > property, which is the key to making a reusable renderer.
> Further
>       > evidence of the correlation is that the itemRenderer and
> itemEditor
>       > properties are of type IFactory, which is what ClassFactory
> implements.
>       > 
>       > I don't want you to think I'm being defensive, its just that
>       > itemRenderers seem to be a topic that comes up repeatedly as a
> pain
>       > point for developers. I think if people had a better
> understanding of
>       > how they worked (especially the rule that you MUST override
> the data
>       > setter method), people could avoid a lot of headaches.
>       > 
>       > The post I wrote prior to the one Darron referenced actually
> shows how
>       > to create a renderer in what I guess is the more traditional
> method
>       > (itemRenderer="MyRendererClass"), so that may be of help to
> you.
>       > However, the reason I initially began investigating
> ClassFactory was
>       > because of problems I was having getting a CheckBox to
> function as a
>       > headerRenderer. For reasons still unknown to me,
> headerRenderers seem
>       > to fire events extremely frequently, which caused difficulty
> getting
>       > it to respond to user interaction in a predictable way.
>       > 
>       > Let me know if you have any other questions or concerns about
>       > renderers (and/or my approach to them) and I will do my best
> to help.
>       > 
>       > Thanks,
>       > Ben
>       > 
>       > --- In [email protected]
> <mailto:flexcomponents%40yahoogroups.com> 
>       
>       > <mailto:flexcomponents%40yahoogroup s.com <http://s.com> > ,
> "Douglas Knudsen" 
>       
>       > <douglasknudsen@> wrote:
>       > >
>       > > thanks, been reading that. Seems like this approach is way
> off the
>       > > direction normally taken for renderers though, eh? Not to
> knock Ben
>       > mind
>       > > you. Can add checkboxes to a datagrid cell with out that,
> correct?
>       > So why
>       > > not headers?
>       > > 
>       > > oh...answering my other question...headers are rendered by
>       > > DataGridItemRenderer by default according to the docs.
>       > > 
>       > > DK
>       > > 
>       > > On 23 Mar 2007 13:31:04 -0700, Darron J. Schall <darron@>
>       > > wrote:
>       > > >
>       > > > Check out
>       > > >
>       > > >
>       >
> http://www.returnundefined.com/2006/11/creating-truly-reusable-renderers
> <http://www.returnundefined.com/2006/11/creating-truly-reusable-renderer
> s> 
>       > -with-classfactory/
>       >
> <http://www.returnundefined.com/2006/11/creating-truly-reusable-renderer
> <http://www.returnundefined.com/2006/11/creating-truly-reusable-renderer
> > 
>       > s-with-classfactory/> 
>       > > >
>       > > > -d
>       > > >
>       > > >
>       > > > Douglas Knudsen wrote:
>       > > > >
>       > > > > How the heck to get a checkbox in the header of a data
> grid, eh?
>       > Let
>       > > > > me re-phrase that some...a workable checkbox. I can
> create a
>       > custom
>       > > > > renderer in AS to put one there, but can't click it at
> all. Anyone
>       > > > > have a example or a nudge?
>       > > > >
>       > > > > --
>       > > > > Douglas Knudsen
>       > > > > http://www.cubicleman.com <http://www.cubicleman.com>  <
> http://www.cubicleman.com <http://www.cubicleman.com> >
>       > <http://www.cubicleman.com <http://www.cubicleman.com>  <
> http://www.cubicleman.com <http://www.cubicleman.com> > >
>       > > > > this is my signature, like it?
>       > > > >
>       > > > >
>       > > >
>       > > > 
>       > > >
>       > > 
>       > > 
>       > > 
>       > > -- 
>       > > Douglas Knudsen
>       
>       > > http://www.cubicleman.com <http://www.cubicleman.com>  <
> http://www.cubicleman.com <http://www.cubicleman.com> > 
>       > > this is my signature, like it?
>       > >
>       >
>       
>       
> 
>       
> 
>       
> 
> 
> 
> 
> -- 
> Douglas Knudsen
> http://www.cubicleman.com <http://www.cubicleman.com> 
> this is my signature, like it?
>


Reply via email to