Luis,

I agree it would be a good feature. Just as an FYI, I submitted it
previously as a feature request to Adobe.

On a side note, next week I will be back at the office, and I will
post the solution to the sorting problem you had as well.

Mike


--- In flexcoders@yahoogroups.com, Luis Eduardo <[EMAIL PROTECTED]> wrote:
>
> 
> 
>   Michael,
> 
>   i subclassed the datagrid and the datagridcolumn because i saw too 
> much issues being resolved on this way. (unfortunately).
>   i dont know much flex neither actionscript, but i read a lot on 
> documentation and tried a lot of tests. Spent 4 hours on this trying to 
> do the "right" thing instead of traversing "by hand" the datapath of
the 
> xml...
>   but damn !!!  actionscript is too much temperamental! clearly a 
> limitation (not a bug) that only root nodes can be evaluated with []s.
>   is there any place which we can ask for this feature to adobe?  would 
> be great!
> 
>   but...  in mean time...  thank you very much for your help bro!
> 
>   my code, inside the extendes class become (with proper credit ;)
>
--------------------------------------------------------------------------------------------
> 
> 
> override public function itemToLabel(data:Object):String {
>             if (!data)
>                 return " ";
>                
>             if (labelFunction != null)
>                 return labelFunction(data, this);
>    
>             if (owner.labelFunction != null)
>                 return owner.labelFunction(data, this);
>            
>             if (typeof(data) == "xml") {
>                 data = deriveComplexColumn( data,  dataField
).toString();
>             }
>    
>             if (typeof(data) == "object") {
>                 try    {
>                     data = data[dataField];
>                 }
>                 catch(e:Error) {
>                     data = null;
>                 }
>             }
>    
>             if (data is String)
>                 return String(data);
>    
>             try {
>                 return data.toString();
>             }
>             catch(e:Error) {
>             }
>    
>             return " ";
>         }
>        
>         // function from Michael Labriola from Flexcoders mail list
>         protected function deriveComplexColumn( data:Object, 
> complexFieldName:String ):Object {
>             var dataPtr:Object = data;
>             var complexName:Array = complexFieldName.split( '.', 10 );
>            
>             for each ( var key:String in complexName )    dataPtr = 
> dataPtr[ key ];
>             return dataPtr;
>         }
>
-----------------------------------------------------------------------------------------------
> 
> the bad thing is that now sorting on the datagridcolumn doesn't work 
> anymore...  and need to be made "by hand" again...
> argh!
> will just wait for the client ask for this.  ;)
> 
>   best regards!
> 
>                 Luís Eduardo.
> 
> 
> 
> Michael Labriola escreveu:
> 
> >
> > You are correct. By default the dataField on DataGridColumn only goes
> > to the root level of the structure you are passing.
> >
> > If you are feeling a little ambitious, you can subclass dataGridColumn
> > and do something like this:
> >
> > protected function deriveComplexColumn( data:Object,
> > complexFieldName:String ):Object
> > {
> > var dataPtr:Object;
> >
> > dataPtr = data;
> >
> > var complexName:Array;
> > complexName = complexFieldName.split( '.', 10 );
> >
> > for each ( var key:String in complexName )
> > {
> > dataPtr = dataPtr[ key ];
> > }
> >
> > return dataPtr;
> > }
> >
> > Then in your itemToLabel method, you can replace this:
> >
> > > try
> > > {
> > > data = data[dataField];
> > > }
> >
> > with this:
> > try
> > {
> > data = deriveComplexColumn( data, dataField );
> > }
> >
> > ...If you don't want to make your own subclass of dataField, then you
> > could do the same thing with an itemRenderer or a labelFunction.
> >
> > So:
> >
> > public function myLabelFunc( row:Object, column:DataGridColumn
):String {
> > return deriveComplexColumn( row, column.dataField ) as String;
> > }
> >
> > Have fun,
> > Mike
> >
> > --- In flexcoders@yahoogroups.com 
> > <mailto:flexcoders%40yahoogroups.com>, Luis Eduardo <illogic_code@> 
> > wrote:
> > >
> > >
> > > yeah... i guess too that if the xml had another format it should
> > work...
> > > but it can't have another format... :(.
> > > the servlets are coded already and they return a xml that have the
> > > format i presented on this sample.
> > > not the same data, but this is the format.
> > >
> > > i search inside the DataGridColumn.as code and find a function named
> > > "itemToLabel" that have this portion of code:
> > >
> > > if (typeof(data) == "object" || typeof(data) == "xml")
> > > {
> > > try
> > > {
> > > data = data[dataField];
> > > }
> > > catch(e:Error)
> > > {
> > > data = null;
> > > }
> > > }
> > >
> > > so, i guess that this way of getting data from a XML (using
brackets)
> > > only can fetch one level of info on the xml format. Not inside his
> > > childrens.
> > > in the end, this line of code will probably be evaluated to this:
> > data
> > > = [EMAIL PROTECTED]
> > > To me, this is a bug.... or, being optmistic, a limitation.
> > >
> > > can someone confirm that? Tracy? Gordon? anyone?
> > >
> > >
> > >
> > >
> > > thunderstumpgesatwork escreveu:
> > >
> > > > Hi,
> > > >
> > > > my guess is that your "dataField" cannot support the complex
> > > > "[EMAIL PROTECTED]"... it should be just a single field name.
> > > >
> > > > To me the XML makes more sense (and is simpler) like this:
> > > >
> > > > > <mx:XMLList id="employees">
> > > > > <employee Id="1" gender="female">
> > > > > <name>Christina Coenraets</name>
> > > > > </employee>
> > > > > <employee Id="2" gender="male">
> > > > > <name>Maurice Smith</name>
> > > > > </employee>
> > > > > </mx:XMLList>
> > > >
> > > > this makes your dataField just "@gender" which I think should
work.
> > > >
> > > > good luck.
> > > >
> > > > --- In flexcoders@yahoogroups.com 
> > <mailto:flexcoders%40yahoogroups.com>
> > > > <mailto:flexcoders%40yahoogroups.com>, Luis Eduardo
<illogic_code@>
> > > > wrote:
> > > > >
> > > > >
> > > > >
> > > > > i could solve part of my problem with a workaround, but not
all is
> > > > > working ok. (i could display the data but the sorting
capability is
> > > > gone).
> > > > > someone have an ideia of how to make this on the rigth path?
> > > > > i am using the "labelFunction" property of the datagrid like
this:
> > > > >
> > > > > <?xml version="1.0"?>
> > > > > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml 
> > <http://www.adobe.com/2006/mxml>
> > > > <http://www.adobe.com/2006/mxml
<http://www.adobe.com/2006/mxml>>">
> > > > > <mx:Script>
> > > > > <![CDATA[
> > > > > public function getRowLabel(item:Object,
> > > > > column:DataGridColumn):String {
> > > > > return [EMAIL PROTECTED];
> > > > > }
> > > > > ]]>
> > > > > </mx:Script>
> > > > >
> > > > > <mx:XMLList id="employees">
> > > > > <employee Id="1">
> > > > > <name gender="female">Christina Coenraets</name>
> > > > > </employee>
> > > > > <employee Id="2">
> > > > > <name gender="male">Maurice Smith</name>
> > > > > </employee>
> > > > > </mx:XMLList>
> > > > >
> > > > > <mx:Panel title="DataGrid Control Example" height="100%"
> > > > width="100%"
> > > > > paddingTop="10" paddingLeft="10" paddingRight="10">
> > > > >
> > > > > <mx:DataGrid id="dg" width="100%" height="100%" rowCount="5"
> > > > > dataProvider="{employees}">
> > > > > <mx:columns>
> > > > > <mx:DataGridColumn dataField="@Id" headerText="ID"/>
> > > > > <mx:DataGridColumn dataField="[EMAIL PROTECTED]"
> > > > > headerText="Gender" labelFunction="getRowLabel"/>
> > > > > <mx:DataGridColumn dataField="name" headerText="Name"/>
> > > > > </mx:columns>
> > > > > </mx:DataGrid>
> > > > >
> > > > > <mx:Form width="100%" height="100%">
> > > > > <mx:FormItem label="Id">
> > > > > <mx:Label text="[EMAIL PROTECTED]"/>
> > > > > </mx:FormItem>
> > > > > <mx:FormItem label="Name">
> > > > > <mx:Label text="{dg.selectedItem.name}"/>
> > > > > </mx:FormItem>
> > > > > <mx:FormItem label="Gender">
> > > > > <mx:Label text="[EMAIL PROTECTED]"/>
> > > > > </mx:FormItem>
> > > > > </mx:Form>
> > > > >
> > > > > </mx:Panel>
> > > > > </mx:Application>
> > > > >
> > > > >
> > > > >
> > > > >
> > > > ----------------------------------------------------------
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > Luis Eduardo escreveu:
> > > > >
> > > > > >
> > > > > > hi,
> > > > > >
> > > > > > i dont know why but my datagrid cant bind well when the format
> > of one
> > > > > > XML have childrens.
> > > > > > i borrow the example on the documentation and make a test to
> > you guys
> > > > > > see what i am talking about.
> > > > > > to see the issue, just select one row and watch the Labels
get the
> > > > > > "gender" property on the right way but, using the same
> > notation, the
> > > > > > grid can't show the values.
> > > > > >
> > > > > > thx for the help,
> > > > > >
> > > > > > Luís Eduardo.
> > > > > >
> > > > > > <?xml version="1.0"?>
> > > > > > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml 
> > <http://www.adobe.com/2006/mxml>
> > > > <http://www.adobe.com/2006/mxml <http://www.adobe.com/2006/mxml>>
> > > > > > <http://www.adobe.com/2006/mxml
<http://www.adobe.com/2006/mxml>
> > <http://www.adobe.com/2006/mxml <http://www.adobe.com/2006/mxml>>>">
> > > > > > <mx:XMLList id="employees">
> > > > > > <employee Id="1">
> > > > > > <name gender="female">Christina Coenraets</name>
> > > > > > </employee>
> > > > > > <employee Id="2">
> > > > > > <name gender="male">Maurice Smith</name>
> > > > > > </employee>
> > > > > > </mx:XMLList>
> > > > > >
> > > > > > <mx:Panel title="DataGrid Control Example" height="100%"
> > width="100%"
> > > > > > paddingTop="10" paddingLeft="10" paddingRight="10">
> > > > > >
> > > > > > <mx:DataGrid id="dg" width="100%" height="100%" rowCount="5"
> > > > > > dataProvider="{employees}">
> > > > > > <mx:columns>
> > > > > > <mx:DataGridColumn dataField="@Id" headerText="ID"/>
> > > > > > <mx:DataGridColumn dataField="[EMAIL PROTECTED]"
> > > > > > headerText="Gender"/>
> > > > > > <mx:DataGridColumn dataField="name" headerText="Name"/>
> > > > > > </mx:columns>
> > > > > > </mx:DataGrid>
> > > > > >
> > > > > > <mx:Form width="100%" height="100%">
> > > > > > <mx:FormItem label="Id">
> > > > > > <mx:Label text="[EMAIL PROTECTED]"/>
> > > > > > </mx:FormItem>
> > > > > > <mx:FormItem label="Name">
> > > > > > <mx:Label text="{dg.selectedItem.name}"/>
> > > > > > </mx:FormItem>
> > > > > > <mx:FormItem label="Gender">
> > > > > > <mx:Label text="[EMAIL PROTECTED]"/>
> > > > > > </mx:FormItem>
> > > > > > </mx:Form>
> > > > > >
> > > > > > </mx:Panel>
> > > > > > </mx:Application>
> > > > > >
> > > > > >
> > > > > > _______________________________________________________
> > > > > > O Yahoo! está de cara nova. Venha conferir!
> > > > > > http://br.yahoo.com <http://br.yahoo.com>
<http://br.yahoo.com 
> > <http://br.yahoo.com>> <http://br.yahoo.com <http://br.yahoo.com>
> > > > <http://br.yahoo.com <http://br.yahoo.com>>>
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > _______________________________________________________
> > > > > Novidade no Yahoo! Mail: receba alertas de novas mensagens
no seu
> > > > celular. Registre seu aparelho agora!
> > > > > http://br.mobile.yahoo.com/mailalertas/ 
> > <http://br.mobile.yahoo.com/mailalertas/>
> > > > <http://br.mobile.yahoo.com/mailalertas/ 
> > <http://br.mobile.yahoo.com/mailalertas/>>
> > > > >
> > > >
> > > >
> > >
> > >
> > >
> > >
> > > _______________________________________________________
> > > Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu
> > celular. Registre seu aparelho agora!
> > > http://br.mobile.yahoo.com/mailalertas/ 
> > <http://br.mobile.yahoo.com/mailalertas/>
> > >
> >
> >  
> 
> 
> 
>               
> _______________________________________________________ 
> O Yahoo! está de cara nova. Venha conferir! 
> http://br.yahoo.com
>





--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/flexcoders/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/flexcoders/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:[EMAIL PROTECTED] 
    mailto:[EMAIL PROTECTED]

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 

Reply via email to