2011-01-06 89 views
0

我有一个SQL语句,我想从SQL数据库中读取名称字段。代码:flex:深入数据提供者数组

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); 
} 

这将从数据库中提取数据。但是,在列表项中,它将所有内容显示为[对象对象]。在调试我可以看到数据提供者显示:

data[0] > name 
data[1] > name 
data[2] > name 

在哪里,我要的信息是每一个数据对象中的名称。

我该如何轻松访问?这是我不断遇到的问题,并希望一劳永逸地解决它!

干杯

回答

1

你要设置的列表(假设Flex 3的位置)的labelField属性。默认情况下,它正在寻找名为“label”而不是“name”的字段。还要查看列表对象的dataField和labelFunction属性以获取更多高级选项。

0

查询结果返回Object实例的数组,但您可能期望String,其键的键等于您选择的列名称。您需要在查询中将“名称”列别名为“标签”(因为List控件使用此名称作为Chris提到的默认labelField),或者您需要在List控件上设置labelField或labelFunction。

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

0

你可以写一个标签功能:

private function list_labelFunction(item:Object):String { 
      return item.columnName; 
     } 

,并确保您的任务列表标签功能设置:

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

这就是我是如何做到的呢!