Flex 4 s: метки элемента списка не отображаются - PullRequest
0 голосов
/ 29 марта 2011

У меня есть следующие s: Список

<s:List
    id="lstOther"
    borderVisible="false"
    width="100%" height="100%"
    dataProvider="{this.handler.itemRendererType}"
    labelFunction="labelFunction"
    itemRendererFunction="itemRendererFunction">
</s:List>

Функции для itemRendererFunction и labelFunction выглядят следующим образом:

private function itemRendererFunction(item:Object):IFactory {
            var clazz:Class = DefaultItemRenderer;
            switch(item.data) {
                case "Security Unit":
                    clazz = CheckBox;
                    break;
                default:
                    clazz = CheckBoxEditLabel;
            }
            return new ClassFactory(clazz);
        }

        private function labelFunction(item:Object):String {
            return "testing";
        }

Мой поставщик данных (dataProvider = "{this.handler.itemRendererType}") составлен следующим образом:

public var itemRendererType:ArrayCollection = new ArrayCollection([
        {name:"otherLabel1", data:"Security Unit"},
        {name:"otherLabel2", data:"Test 1"},
        {name:"otherLabel3", data:"Test 2"}
    ]);

Сначала я попытался установить labelField в s: List на 'name'. Ничего не появилось в списке управления. Как видно выше, я пытался использовать функцию метки и возвращать жестко закодированное значение («тестирование»). Все еще ничего не появляется.

Почему текст меток не отображается?

Любая помощь будет принята с благодарностью. Спасибо!

Ответы [ 3 ]

0 голосов
/ 30 марта 2011

this.handler не равно нулю. handler - это класс Actionscript, в котором определен itemRendererType.

0 голосов
/ 30 марта 2011

Следующее средство визуализации элементов отлично работает с вашим образцом:

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    autoDrawBackground="true">
    <s:CheckBox label="{label}" />
</s:ItemRenderer>
0 голосов
/ 30 марта 2011

Мое непосредственное предположение - то, что this.handler является нулем; Вы должны отладить, чтобы понять, почему это так (а что такое обработчик?). Вы были правы насчет использования labelField = "name", которое должно работать, но ничего не покажет, если у вас нет данных. Кроме того, я вполне уверен, что ваша itemRendererFunction не будет работать должным образом, поскольку он должен возвращать компонент, который расширяет s: ItemRenderer.

...