Apache flex 从远程http服务填充数据网格

Apache flex 从远程http服务填充数据网格,apache-flex,Apache Flex,我正在尝试我的第一个flex应用程序。将xml http服务中的数据添加到datagid时遇到问题 我的xml文件如下所示: <players> <player> <name>test</name> <status>F</status> <claimed>1</claimed> </player> <player> <nam

我正在尝试我的第一个flex应用程序。将xml http服务中的数据添加到datagid时遇到问题

我的xml文件如下所示:

<players>

  <player>
    <name>test</name>
    <status>F</status>
    <claimed>1</claimed>
  </player>

  <player>
    <name>meta</name>
    <status>F</status>
    <claimed>1</claimed>
  </player>
</players>
问题是datagrid中没有显示任何内容

我只是一个初学者,所以请告诉我这个类的错误是什么

结果函数(在ListOfPlayers类中)应该给出玩家列表,而不是调用Web服务的函数

您可以在服务器类中添加以下内容:

[Bindable]
public var playersData:ArrayCollection; 
在您的视图中,使用bindable标记添加此变量,并设置值addthisline in main(): playersData=users.playersData

然后datagrid数据提供程序是“{playersData}”


这应该行得通。但是使用XML列表,要知道您在树中的位置有多深总是有点困难;)

你能给我解释一下吗。当我学习一些关于OOD的书籍时,无论我在哪里看到,都应该添加私有变量和公共访问函数(getter和setter),我现在要做的是在类中定义公共变量。这样可以吗?实际上这是更好的练习。但是你必须知道PlayerData什么时候被更改。我通过使其可装订来实现这一点。您可以使getter成为可绑定的,但这使示例变得更加复杂。还有一件事:我刚刚注意到这行有一个问题:playersData=event.result.players.player;在这里创建ArrayCollection似乎更正确?e、 g.playersData=ArrayCollection(event.result.players.player);但这段代码不起作用(给出了一个错误,它无法将数组集合转换为数组…)为什么?我不完全确定,但我猜这个错误是因为您得到了一个XML列表,而您只是将它放在arraycollection中。Flex无法做到这一点。您可以对PlayerData使用XML或xmllist变量。
ListOfPlayers.as

package goclient
{
    import flash.utils.Timer;
    import mx.controls.Alert;
    import mx.collections.ArrayCollection;
    import mx.rpc.events.ResultEvent;
    import mx.rpc.http.mxml.HTTPService;

    public class ListOfPlayers
    {
        public var usersListService:HTTPService;
        private var minTimer:Timer = new Timer(100000, 0);  
        private var playersData:ArrayCollection;    
        private var person:currentPerson; 

        public function ListOfPlayers()
        {
            usersListService = new HTTPService();
            usersListService.url = "http://127.0.0.1:8000/go/active/";
            usersListService.addEventListener(ResultEvent.RESULT, resultHandler);
            //Alert.show("Here");
            sendData(); 
            //minTimer.addEventListener(TimerEvent.TIMER, sendData);
            //minTimer.start();

        }

        public function getResp():String
        {
            return "Resr";
        }

        public function resultHandler(event:ResultEvent):void
        {
            //person = new currentPerson(event.result.current.username, event.result.current.img, event.result.current.rank);
            playersData = event.result.players.player;
            Alert.show("resh");

        }
        public function sendData():void
        {
            usersListService.send();
        }

        public function getPlayersList():ArrayCollection
        {
            Alert.show(playersData.toString());
            return playersData;
        }

    }
}
[Bindable]
public var playersData:ArrayCollection;