2011-03-29 5 views
0

나는 다음의가 : 목록을 itemRendererFunction와의 labelFunction는 다음과 같이 대한플렉스 4의 : 목록이 표시되지 레이블의 itemRenderer

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

기능 :

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 to 'name'. 목록 컨트롤에 아무 것도 나타나지 않았습니다. 위에서 볼 수 있듯이 레이블 함수를 사용하고 하드 코딩 된 값 ("testing")을 반환하려고했습니다. 아직 아무것도 나타나지 않습니다.

레이블 텍스트가 표시되지 않는 이유는 무엇입니까?

도움을 주시면 감사하겠습니다. 감사!

+0

당신이 당신의 체크 박스 CheckBoxEditLabel 렌더러에 코드를 게시 할 수 있습니까? –

답변

0

즉각적인 추측은 this.handler이 null이라는 것입니다. 왜 디버깅해야하는지 (어쨌든 핸들러는 무엇인가?). labelField = "name"을 사용하는 것이 옳았습니다. 작동해야하지만 데이터가없는 경우 아무 것도 표시하지 않습니다. 또한 itemRendererFunction이 s : ItemRenderer를 확장하는 구성 요소를 반환해야하므로 제대로 작동하지 않을 것이라고 확신합니다.

0

this.handler는 null이 아닙니다. 핸들러은 itemRendererType이 정의 된 actionscript 클래스입니다.

0

다음 아이템 렌더러는 샘플과 함께 잘 작동 :

<?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> 
관련 문제