2011-03-29 58 views
0

我有下列:清單的Flex 4 S:列表的itemRenderer標籤不顯示

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

我的數據提供者(數據提供程序=」 {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'中。列表控件中沒有出現任何內容。從上面可以看出,我嘗試使用標籤函數並返回硬編碼值(「測試」)。仍然沒有出現。

爲什麼標籤的文字不顯示?

任何幫助將不勝感激。謝謝!

+0

你能代碼發佈到您的CheckBox和CheckBoxEditLabel渲染? – 2011-03-30 04:19:56

回答

0

我的猜測是this.handler爲空;你應該進行調試,看看爲什麼(反正什麼是處理程序?)。你是正確的使用labelField =「名稱」,這應該工作,但不會顯示任何東西,如果你沒有任何數據。另外,我相當確定你的itemRendererFunction不能正常工作,因爲它需要返回一個擴展s的組件:ItemRenderer。

0

this.handler不爲空。 處理程序是定義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>