Apache flex 从远程http服务填充数据网格
我正在尝试我的第一个flex应用程序。将xml http服务中的数据添加到datagid时遇到问题 我的xml文件如下所示: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
<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;