You are right, it was the first one.  And I have looked at FlexBI and
SuperGrid, and am utterly amazed.  I plan to keep a link to that demo
handy for all the folks who request DataGrid enhancements, especially
the requests for colspan and grouping/subtotals.  They need look no
further.

 

Tracy

 

________________________________

From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
Behalf Of Anatole Tartakovsky
Sent: Thursday, November 30, 2006 2:01 PM
To: flexcoders@yahoogroups.com
Subject: Re: [flexcoders] Re: Can't get value after labelfunction

 

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
<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]
<mailto:[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 <http://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: [EMAIL PROTECTED] ups.com <http://ups.com/>
[mailto:[EMAIL PROTECTED] ups.com <http://ups.com/> ] On Behalf Of
bsdensmore
Sent: Thursday, November 30, 2006 8:32 AM
To: flexcoders@yahoogroups.com <http://ups.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"
< [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
<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
> >
> 

 

 

Reply via email to