flex: сверление в массивы провайдеров данных - PullRequest
0 голосов
/ 06 января 2011

У меня есть оператор 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);
}

Это извлечет данные из БД.Тем не менее, в элементе списка он показывает все как [объект объекта].После отладки я вижу, что поставщик данных показывает:

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

Где информация, которую я хочу, - это имя в каждом объекте данных.

Как мне легко получить к этому доступ?Я постоянно сталкиваюсь с этой проблемой и хотел бы решить ее раз и навсегда!

Приветствия

Ответы [ 3 ]

1 голос
/ 06 января 2011

Вы хотите установить свойство labelField в списке (при условии, что здесь Flex 3).По умолчанию он ищет поле с именем «label», а не «name».Также обратите внимание на свойства dataField и labelFunction объекта list, чтобы узнать некоторые дополнительные параметры.

0 голосов
/ 08 января 2013

Вы можете написать функцию метки:

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

И убедитесь, что в вашем Списке установлена ​​функция метки:

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

Вот так я и сделал!

0 голосов
/ 06 января 2011

В результате запроса возвращается массив экземпляров Object, в то время как вы можете ожидать String, ключи которого равны выбранным вами именам столбцов. Вам нужно будет либо псевдоним столбца «имя» для «метки» в вашем запросе (так как элемент управления List использует это как labelField по умолчанию, как указано выше), либо вам нужно установить labelField или labelFunction на элемент управления List.

Обратите внимание, что вы также можете возвращать типизированные объекты вместо простых экземпляров Object, установив свойство itemClass в операторе.

...