2012-01-10 99 views
0

我在Datagrid(Spark)中有一個Gridcolumn。 Column的dataprovider是一個Number值,通過Binding進行更新。Datagrid itemrenderers設置數據方法中的值不會返回正確的數據

現在,沒有項目渲染器,單元格顯示正確的值。 如果我設置了項目渲染器,我無法訪問此渲染器中的值。

我的渲​​染器看起來像這樣,所以在這裏沒有任何東西(現在),但追蹤值,但值總是NaN。

<?xml version="1.0" encoding="utf-8"?> 
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" width="100%" height="100%" > 

<fx:Script> 
    <![CDATA[ 

     override public function set data(value:Object):void { 
      trace(Number(value)); 
     } 

    ]]> 
</fx:Script> 

</s:GridItemRenderer> 

我真的不明白爲什麼會發生這種情況,所以任何見解都將非常感謝!同樣,沒有渲染器,列顯示正確的值,所以顯然DefaultGridItemRenderer工作正常。

按照要求,這是我的Datagrid;

<s:DataGrid id="dataGrid" dataProvider="{_listItems}"> 
    <s:columns> 
     <s:ArrayList> 
      <s:GridColumn dataField="change" headerText="Change" itemRenderer="myitemrenderer" /> 
    ... 
</s:DataGrid> 

_listItems是與模型類,它具有:(主要)被叫類型數的變化特性的情況下的ArrayList。

+0

嘗試's:MXDataGridItemRenderer />' – kaissun 2012-01-10 11:12:15

+0

引發以下錯誤:VerifyError:錯誤#1014:找不到類mx.controls.dataGridClasses :: DataGridListData。 – AlBirdie 2012-01-10 11:35:23

+0

你可以添加你的DataGrid代碼嗎?如果我們能夠看到如何爲該列分配數據提供者和項目渲染器,將會更容易。 – randomUser56789 2012-01-10 12:07:52

回答

0

這樣做:

 [Bindable] 
     private var simpleDataProvider:ArrayCollection = new ArrayCollection([{first: "this", second: "is", third:"test", fourth:"data"}, 
      {first:"not", second:"full", third: "row"}]); 

的DataGrid:

<s:DataGrid id="dg" dataProvider="{simpleDataProvider}"> 
    <s:columns> 
     <s:ArrayCollection> 
      <s:GridColumn dataField="first"/> 
      <s:GridColumn itemRenderer="Group.TestRenderer3"/>   
      <s:GridColumn dataField="third"/> 
      <s:GridColumn dataField="fourth"/> 
     </s:ArrayCollection> 
    </s:columns>   
</s:DataGrid> 

和項目渲染器:

<?xml version="1.0" encoding="utf-8"?> 
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        xmlns:mx="library://ns.adobe.com/flex/mx" clipAndEnableScrolling="true"> 

    <fx:Script> 
     <![CDATA[ 
      override public function set data(value:Object):void 
      { 
       lblData.text = value.second; 
      } 
     ]]> 
    </fx:Script> 

    <s:Label id="lblData" top="9" left="7"/> 

</s:GridItemRenderer> 

最重要的事情是在你的情況value.second應該value.change

+0

這就是問題所在,我不能這樣做,因爲DataGrid具有可變列,並且模型類具有大量可以顯示在網格列中的屬性,所以在這裏使用固定值(如更改)isn不可能。 – AlBirdie 2012-01-10 14:01:15