Hmmm...  I re-checked and I did indeed send my original message to
[EMAIL PROTECTED] Perhaps you received a private copy because
I'm a new member of the list?
 
________________________________

From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of Tracy Spratt
Sent: Tuesday, January 30, 2007 9:18 AM
To: [email protected]
Subject: [flexcoders] RE: ItemRenderer Problem
 
I don't answer private requests for help (for free, that is).  I am very
willing to try to help, but I require that my work benefit the entire
community, not just one person.
 
Take this question ot one of the public lists like flexcoders or the
Adobe forums.
 
Tracy
 
________________________________

From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of Robb Cundick
Sent: Tuesday, January 30, 2007 1:00 AM
To: [email protected]
Subject: ItemRenderer Problem
 
Hello, I'm a Flex newbie in need of some help.
I'm grabbing an array of data from a Web service and displaying it in a
List component. On the Flex side I store the data in an ArrayCollection,
the name of which I set as the Data Provider for my list. I have a field
called "Display" which I set as the List's labelField. 
Everything works fine, but then I wanted to get a little fancier and
vary the color of each line based on another field called
"MemberStatus." To do that I wrote an ItemRenderer component which
contains a label that I use to vary the text display.
In the itemRenderer I override the "set data" function, expecting that I
can then use the supplied Object parameter to reference both the
"Display" field to set as the text of the label, and the "MemberStatus"
field to determine the text color I want for the label. Unfortunately,
things don't work as I think they should. If I override "set data" as
follows:
override public function set data(oItem:Object):void
{
  displayItem.text = oItem.Display;
  (Followed by additional code using oItem.MemberStatus to determine the
color)
}

I get the following error:
ReferenceError: Error #1069: Property Display not found on String and
there is no default value.
 at memberListRenderer/set data()
 at
mx.controls::List/http://www.adobe.com/2006/flex/mx/internal::setupRende
rerFromData()
 at mx.controls::List/measureWidthOfItems()
 at mx.controls::List/mx.controls:List::commitProperties()
 at mx.core::UIComponent/validateProperties()
 at mx.managers::LayoutManager/::validateProperties()
 at mx.managers::LayoutManager/::doPhasedInstantiation()
 at Function/http://adobe.com/AS3/2006/builtin::apply()
 at mx.core::UIComponent/::callLaterDispatcher2()
 at mx.core::UIComponent/::callLaterDispatcher()
Here's a sample of the output of the web service:
<?xml version="1.0" encoding="utf-8" ?> 
  <ArrayOfMemberSearchList
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
<http://www.w3.org/2001/XMLSchema-instance> "
xmlns:xsd="http://www.w3.org/2001/XMLSchema
<http://www.w3.org/2001/XMLSchema> " xmlns="http://tempuri.org/
<http://tempuri.org/> ">
    <MemberSearchList>
      <ID>414</ID> 
      <Display>Doe, Jane</Display> 
      <MemberStatus>O</MemberStatus> 
    </MemberSearchList>
    <MemberSearchList>
     <ID>109</ID> 
      <Display>Smith, John</Display> 
      <MemberStatus>C</MemberStatus> 
    </MemberSearchList>
  </ArrayOfMemberSearchList>
If I just insert the above data exactly "as is" in a test program as
type mx:Model I have no problem; the oItem.Display and
oItem.MemberStatus fields are "legal" and yield the results I want.  But
when I use the web service I get the error. 
I can set the label in the itemRenderer to have a data provider of
{data.Display} and it works using the web service. But that doesn't do
me any good because I have  no way to access the MemberStatus field and
alter the color. Obviously the problem has something to do with the
oItem field in "set data" not being what I think it is. Does anyone know
what I'm doing wrong?
TIA,
Robb
 

Reply via email to