Значение в методе набора данных Datagrid не возвращает правильные данные - PullRequest
0 голосов
/ 10 января 2012

У меня есть Gridcolumn в Datagrid (Spark).Поставщик данных столбца - это числовое значение, которое обновляется с помощью привязки.

Теперь без средства визуализации элементов в ячейке отображаются правильные значения.Если я установлю средство рендеринга элементов, я не смогу получить доступ к значениям в этом рендерере.

Мой рендерер выглядит так, так что на самом деле ничего (здесь пока) нет, кроме как отследить значение, но значение всегда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 с экземплярамикласс модели, который имеет (среди прочего) свойство, называемое изменением типа Number.

1 Ответ

0 голосов
/ 10 января 2012

Делай так:

        [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

...