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