I keep going in circles with this. If I don't use the ClassFactory I can get the calculations to work but I can't figure out how to send the value back to the dataProvider. If I try to use the ClassFactory and set my properties through the ClassFactory properties nothing is being passed into the itemRenderer.
This is driving me nuts. My DataGrid has 3 Fields Case_Weight, Cases_Claimed and Net_Lbs. Net_Lbs uses the item renderer which is a "Text" Custom Component. When the dataProvider is populated only Case Weight has a value. The other 2 fields are blank. Cases_Claimed is editable and based on what is entered in there it multiplies Case_Weight and Cases_Claimed and sets Net_Lbs to the total amount. Should I be using something other than a "Text" component? Thanks, Ben --- In flexcoders@yahoogroups.com, "Tracy Spratt" <[EMAIL PROTECTED]> wrote: > > An item renderer will certianly work and there are a lot of examples > available. The process will be exactly the same as for the checkbox > renderer yo have worked with, so it will be much easier this time > (assuming you got the checkbox renderer working correctly! If not, I > have an example on cflex.net. > > > > But actually what I was suggesting was a bit different. I think it was > Anatole who mentioned using this technique as well, but what you would > do is use the raw result data to build an arrayCollection of new custom > objects. The custom class would have the caluclated properties built in, > and you would use this ArrayCollection as the dataProvider. > > > > Since clearly your raw dataProvider does not have the calculated > property/field in it, you would have to somehow add this property to the > dataProvider anyway, to be able to set it from your renderer. > > > > If you build the custom objects up front, you would not need the > renderer, and the class could be optimized to simplify building the > structure you are going to send back to the server. > > > > This technique leaves labelFunction and even custom renderers available > to modify the presentation, without mucking with the base data. > > > > This may sound inefficient, but I have been doing it on my apps a lot, > and have found that for this kind of non-visual stuff, even Flash Player > 7 was blazingly fast. The improvements in 8, 9 make it even faster. > > > > Tracy > > > > ________________________________ > > From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On > Behalf Of bsdensmore > Sent: Thursday, November 30, 2006 8:32 AM > To: flexcoders@yahoogroups.com > Subject: [flexcoders] Re: Can't get value after labelfunction > > > > Thanks Ben and Tracy, > I was thinking that I might need to use an item renderer but was > hoping to not have to. I just struggled with using them to implement a > checkbox into the DataGrid. I still don't get how to write them > effectively. I need to do some more reading to try and get a better > grip. > > What type of component should be used for this? Just a Text or Label? > > Thanks, > Ben > > --- In flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> > , "ben.clinkinbeard" > <ben.clinkinbeard@> wrote: > > > > Tracy is right, you should use an itemRenderer for this. > > calculatedValueRenderer should override the data method (like all good > > little renderers do :)) and in the method retrieve the values to be > > calculated as well as updating the calculated value in the > > dataProvider. Using the ClassFactory approach that we've discussed, > > apossible properties property may look something like this: > > > > myCalcFactory.properties = {sourceFieldA: "quantity", sourceFieldB: > > "price", totalField: "totalItemPrice"}; > > > > HTH, > > Ben > > > > > > --- In flexcoders@yahoogroups.com > <mailto:flexcoders%40yahoogroups.com> , "Tracy Spratt" <tspratt@> wrote: > > > > > > I don't think labelFunction is intended to update the dataProvider. > I > > > don't see how it possibly could, since it can use multiple columns > and > > > does not even have to have a dataProvider property associated with > it. > > > > > > > > > > > > If you want this, I heard of a technique that uses a custom item > object, > > > with calculated properties like that built in, and when result data > is > > > received, one loops over the raw data creating custom objects for > each, > > > and assigning them to the dataProvider. This also lets you use > > > labelFunction to change the way the data is displayed, without > messing > > > up the underlying data. Currency formatting, for example. > > > > > > > > > > > > Just brainstorming. > > > > > > > > > > > > Tracy > > > > > > > > > > > > ________________________________ > > > > > > From: flexcoders@yahoogroups.com > <mailto:flexcoders%40yahoogroups.com> > [mailto:flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> > ] On > > > Behalf Of bsdensmore > > > Sent: Wednesday, November 29, 2006 5:23 PM > > > To: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> > > > > Subject: [flexcoders] Can't get value after labelfunction > > > > > > > > > > > > I have 2 DataGridColumns that use a labelfunction to multiply a > couple > > > of fields and display the value in another column. For some reason > > > after the field is updated with the total I can't get at that value. > > > > > > > The dataProvider that the DataGrid is bound to is a query result > that > > > is converted to an ArrayCollection. When the ArrayCollection is > > > initially populated this field is blank. So, I'm guessing that after > > > the labelfunction executes it doesn't update the ArrayCollection to > > > hold the newly calculated value? > > > > > > How can I go about updating the ArrayCollection so I can save it to > a > > > database table. I swear I had this working. > > > > > > Thanks, > > > Ben > > > > > >