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
> > >
> >
>
>