Try:

tabsDataProvider = new ArrayCollection(event.result);
tabsDataProvider.dispatchEvent (new CollectionEvent ());

-----Original Message-----
From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
Behalf Of Tim Sawyer
Sent: Wednesday, March 08, 2006 7:25 AM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] Repeater and Web Services (Flex 2b1)

I'm having a problem trying to get a set of tabs generated from a web
service.  Full code for my component is pasted at the end of the message.

The problem is down to getting the results from the web service and
getting the tabs to rebuild from that list.

If I do:

tabsDataProvider = new ArrayCollection(event.result);

then the tabs aren't rebuilt, presumably because the Repeater doesn't
notice the list has changed.

If I add individual objects to the tabsDataProvider, which is an
ArrayCollection, using a for loop (see code later) then the event does
fire as expected and I get a runtime error:

TypeError: Error #1009: null has no properties.
        at mx.core::Repeater/mx.core:Repeater::getIndexForFirstChild()
        at mx.core::Repeater/mx.core:Repeater::recreate()
        at mx.core::Repeater/mx.core:Repeater::execute()
        at mx.core::Repeater/mx.core:Repeater::collectionChangedHandler()
        at flash.events::EventDispatcher/dispatchEvent()
        at mx.collections::ListCollectionView/dispatchEvent()
        at
mx.collections::ListCollectionView/mx.collections:ListCollectionView::addIte
msToView()
        at
mx.collections::ListCollectionView/mx.collections:ListCollectionView::listCh
angeHandler()
        at flash.events::EventDispatcher/dispatchEvent()
        at
mx.collections::ArrayList/mx.collections:ArrayList::internalDispatchEvent()
        at mx.collections::ArrayList/addItemAt()
        at mx.collections::ListCollectionView/addItemAt()
        at mx.collections::ListCollectionView/addItem()
        at
components::DashBoardTabList/components:DashBoardTabList::populateCategoryLi
st()
        at MethodInfo-2275()
        at flash.events::EventDispatcher/dispatchEvent()
        at mx.rpc::AbstractService/dispatchEvent()
        at
mx.rpc::AbstractOperation/http://www.macromedia.com/2005/flex/mx/internal::d
ispatchRpcEvent()
        at
mx.rpc::AbstractInvoker/http://www.macromedia.com/2005/flex/mx/internal::res
ultHandler()
        at flash.events::EventDispatcher/dispatchEvent()
        at mx.rpc::Producer/acknowledge()
        at
C:\dev\enterprise_beta1\frameworks\libs\framework.swc(mx/validators/Validato
r)$132::DirectHTTPMessageResponder/completeHandler()
        at flash.events::EventDispatcher/dispatchEvent()
        at flash.net::URLLoader/flash.net:URLLoader::onComplete()

Can someone give me a pointer in the right direction?

ta,

Tim.

Full component code:

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.macromedia.com/2005/mxml";
xmlns:comp="components.*" initialize="callWebServiceForCategoryList()">
  <mx:Script>
    <![CDATA[
     
    import services.category.FetchCategoryList;
    import services.category.FetchCategoryListCallParameter;
    import mx.rpc.AbstractService;
    import mx.collections.ArrayCollection;
    import mx.rpc.events.ResultEvent;
    [Bindable] public var tabsDataProvider : ArrayCollection = null;
  
    private function callWebServiceForCategoryList():void
    {
      var lService : AbstractService = FetchCategoryList.getService();
      var lCallParam : FetchCategoryListCallParameter = new
FetchCategoryListCallParameter();
      lCallParam.SecurityToken = "Blah";
      var lCall : Object = lService.FetchCategoryList(lCallParam);
      lCall.resultHandler = this.populateCategoryList;
    }
    
    private function populateCategoryList(event : ResultEvent) : void
    {
      tabsDataProvider = new ArrayCollection();
      var lResults : ArrayCollection = new ArrayCollection(event.result);
      var lIndex:int;
      for (lIndex = 0; lIndex < lResults.length; lIndex++)
      {
        tabsDataProvider.addItem(lResults.getItemAt(lIndex));
      }
    } 
    ]]>
  </mx:Script>


        <mx:TabNavigator width="100%" height="100%" >
                <mx:Canvas label="Home" width="100%" height="100%">
                        <comp:FrontPage/>
                </mx:Canvas>
                <mx:Repeater id="myCategories"
dataProvider="{tabsDataProvider}"
startingIndex="0">
                  <mx:Canvas label="{myCategories.currentItem.Description}"
width="100%" height="100%" >
                                <comp:DashBoardPage/>
                        </mx:Canvas>
                </mx:Repeater>
                
                <mx:Canvas label="Control Panel" width="100%" height="100%"
>
                        <comp:AdminFrontPage/>
                </mx:Canvas>
        </mx:TabNavigator>
</mx:HBox>







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



 









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

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