i used updateComplete to listen for changes in the dataProvider.

private function categoryDataChanged(event:FlexEvent):void{
                                if(event.currentTarget == categoryCombo){
                                        //this is to prevent it from collecting 
garbage data for the first time
                                        try {
                                                if 
(event.target.selectedItem.data != -1) {
                                                        
                                                }
                                        } catch(e:Error){
                                                //do nothing
                                        }

                                }
                        }

this is how my listener is implemented, i had to use try block because
the first time the value would be null and i wouldn't get error in
flex.

Nayan
On Fri, Feb 29, 2008 at 4:03 PM, Tracy Spratt <[EMAIL PROTECTED]> wrote:
>
>
>
>
>
>
>
>
>
> I have found that whenever you programatically assign a dataProvider, you
> must use callLater() to invoke any methods that affect the visual UI.
>
>
>
> Tracy
>
>
>
>  ________________________________
>
>
> From: [email protected] [mailto:[EMAIL PROTECTED] On
> Behalf Of guitarguy555
>  Sent: Friday, February 29, 2008 3:50 PM
>  To: [email protected]
>  Subject: [flexcoders] Re: DataGrid - programmatically selecting the first
> row - selectedItem is null
>
>
>
>
>
>
> Thanks for the replies - well, I tried that suggestion (
>  dg.selectedItem = xmlData[0] )and the XML is null at this point.
>
>  Yes, the XML data is not available yet when the App's creation
>  complete is called. I should have mentioned as well that this
>  DataGrid and form are in a component. The component's DataGrid data
>  source is set from the mxml declaration in the application.
>
>  The XML data is retrieved from an HTTPSService object. So in the
>  main App, once this XML data is retrieved, I now try to set the
>  selectedItem as follows in the result handler:
>
>  private function onHandleGetData(event:ResultEvent):void{
>
>  tableData = event.result as XML;
>  dg.dgSelector.selectedItem = tableData[0];
>
>  }
>
>  When I step through the code, I can see that the result contains the
>  desired XML. But when I step into the code on that last line - where
>  I try to assign a value to dg.selectedItem, Flex ends up in the
>  ListBase.as clearSelected() function.
>
>  In this function these 2 lines get called:
>
>  _selectedIndex = -1;
>  _selectedItem = null;
>
>  which cancel out the assignment!!
>
>  Has anybody else run into this situation?
>
>  I just want to programmatically select that first row and have the
>  corresponding form populate with that row's values.
>
>  Given that the Grid and form are in a component, this might
>  complicate things but it seems to me that this would be a common
>  scenario - having a master/detail Grid/Form in a component.
>
>  Thanks
>
>  --- In [email protected], "letterpigeon" <[EMAIL PROTECTED]> wrote:
>  >
>  > I think this might be a race condition problem. Your data might not
>  > have been loaded when the creationComplete event is fired (it is
>  fired
>  > after all the UI components are created, but any service call you
>  made
>  > to load up the data might not have returned yet).
>  >
>  > Ban
>  >
>  > --- In [email protected], "guitarguy555" <djohnson29@>
>  wrote:
>  > >
>  > > In my application, I have a datagrid that is bound to XML data.
>  The
>  > > datagrid has a corresponding form that contains the details.
>  When
>  > > the user clicks on a row in the datagrid the form populates with
>  the
>  > > values from the DataGrid's selectedItem.
>  > >
>  > > I want to programatically select the first row in my DataGrid
>  when
>  > > the application loads.
>  > >
>  > > In order to do this, I have to call validateNow() and
>  scrollToIndex()
>  > >
>  > > eg.
>  > >
>  > > dg.selectedIndex = 0;
>  > > dg.validateNow();
>  > > dg.scrollToIndex(0);
>  > >
>  > > I put this code in the Applications creationComplete handler.
>  > >
>  > > This all works great - the first row is highlighted and selected
>  and
>  > > the selectedIndex is 0. The problem is that I can't access the
>  data
>  > > to populate the details form. When I try to retrieve the
>  > > dg.SelectedItem property - it is null.
>  > >
>  > > How does one programatically select the first row in the grid on
>  load
>  > > AND access the row data?
>  > >
>  > > thanks
>  > >
>  >
>
>  

Reply via email to