Tracy,

  I am not sure which one occasion you are referring  as I was out of
public forums for a while. Most likely it was one of these 2:
1. Assuming you have DTO/valueObject of this structure
class LineItemDTO {
 public var price:Number;
  public var quantity:Number;
}
I would recommend to change it:
class LineItemDTO {
 public var price:Number;
  public var quantity:Number;
  public function get():Number { return price * quantity};// virtual column
}
and leave labelFunctions for formatting/labels

2. After a while you get tired of doing trick 1 (actually happened before I
did it once)
you build something like this
http://www.faratasystems.com/max/farata_max.html (our preso from max) and
let end-user do it
Thank you,
Anatole


On 11/30/06, 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 <flexcoders%40yahoogroups.com>, "
ben.clinkinbeard"
<[EMAIL PROTECTED]> 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 <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 <flexcoders%40yahoogroups.com>
[mailto:flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>] On
> > Behalf Of bsdensmore
> > Sent: Wednesday, November 29, 2006 5:23 PM
> > To: flexcoders@yahoogroups.com <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
> >
>



Reply via email to