Apache flex flex:深入研究数据提供程序阵列

Apache flex flex:深入研究数据提供程序阵列,apache-flex,actionscript-3,mxml,Apache Flex,Actionscript 3,Mxml,我有一个SQL语句,我想从SQL数据库中读取名称字段。守则: public function getAllGiberish():void { var stmt:SQLStatement = new SQLStatement(); stmt.sqlConnection = sqlConnection; stmt.text = "SELECT name FROM test3"; stmt.execute(); l.dataProvider = new ArrayCollectio

我有一个SQL语句,我想从SQL数据库中读取名称字段。守则:

public function getAllGiberish():void {
  var stmt:SQLStatement = new SQLStatement();
  stmt.sqlConnection = sqlConnection;
  stmt.text = "SELECT name FROM test3";
  stmt.execute();
  l.dataProvider = new ArrayCollection(stmt.getResult().data);
}
这将从数据库中提取数据。但是,在列表项中,它将所有内容显示为[object]。调试后,我可以看到数据提供程序显示:

data[0] > name
data[1] > name
data[2] > name
其中我想要的信息是每个数据对象中的名称

我如何轻松访问此文件?这是一个我经常遇到的问题,我想一劳永逸地解决它


干杯

您想在列表上设置labelField属性(此处假设为Flex 3)。默认情况下,它查找的是名为“label”而不是“name”的字段。还可以查看列表对象的dataField和labelFunction属性,以获得一些更高级的选项。

查询结果返回一个对象实例数组,而您可能需要字符串,它们的键与您选择的列名相等。您需要将查询中的“name”列别名为“label”(因为列表控件将其用作Chris metioned的默认labelField),或者需要在列表控件上设置labelField或labelFunction


请注意,通过在语句上设置itemClass属性,还可以返回类型化对象而不是普通对象实例。

您可以编写标签函数:

private function list_labelFunction(item:Object):String {
            return item.columnName;
        }
并确保列表中设置了标签功能:

<s:List id="myList" labelFunction="list_labelFunction"/>

反正我就是这么做的